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!