BitTable
Id | Name | BitId |
---|---|---|
1 | TestData1 | 1 |
2 | TestData2 | 2 |
7 | TestData3 | 4 |
BitMask Table
DataId | DataMask |
---|---|
12 | 3 |
13 | 3 |
14 | 6 |
SQL Query and Output
Select * from bittable bt
Inner join bitmask bm on bm.DataMask & bt.BitId = bt.BitId
where bm.DataMask & 4 = 4
Id | Name | BitId | DataId | DataMask |
---|---|---|---|---|
2 | TestData2 | 2 | 14 | 6 |
7 | TestData3 | 4 | 14 | 6 |
My SQL query is giving me desired out put, I am trying to convert this to C# Linq query, but couldn't find any examples on how to do Join using a bit mask condition.
I am able to query Single table using Linq like below, but not sure how to join the other table
[Flags]
public enum MaskKeys
{
TestData1 = 1,
TestData2 = 2,
TestData3 = 4
}
public class BitMask
{
public int DataId{ get; set; }
public MaskKeys DataMask{ get; set; }
}
public class BitTable
{
public int Id{ get; set; }
public string Name {get;set}
public MaskKeys BitId { get; set; }
}
var dataMaskList = _context.BitMask
.Where(x =>((int)x.DataMask & 4) == 4)
.ToList(); //works
var dataMaskList = _context.BitMask
.Where(x=>x.DataMask.HasFlag(MaskKeys.TestData3)).ToList(); //also works
var finalResult = _context.BitMask.Join(
_context.BitTable,//not sure how to join
Any help would be much appreciated!