C#EF Linq按位问题

Cyb*_*rew 7 linq entity-framework bit-manipulation c#-4.0

好吧,例如,我按照这样的方式使用:星期一= 1,星期二= 2,星期三= 4,星期四= 8等...

我正在使用Entity Framework类的Business.

我正在使用一个类并传递一个像7(星期一,星期二,星期三)的值.

我想返回与那些日子相匹配的记录

    public List<Business> GetBusinesses(long daysOfWeek)
    {
         using (var c = Context())
         {
              return c.Businesses.Where(???).ToList();
         }
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢!

编辑

好的,我正在尝试以下方法:

var b = new List<Business>();
var b1 = new Business(){DaysOfWeek = 3};
b.Add(b1);
var b2 = new Business() { DaysOfWeek = 2 };
b.Add(b2);
var decomposedList = new[]{1};
var l = b.Where(o => decomposedList.Any(day => day == o.DaysOfWeek)).ToList(); 
Run Code Online (Sandbox Code Playgroud)

但是l返回0结果假设在decomposedList(1)我正在寻找星期一.我创建了包含星期一和星期二的b1.

Ian*_*cer 8

使用按位和运算符&将所需的标志与数据库中的实际标志组合,然后检查非零结果.

        var b1 = new { DaysOfWeek = 3 };
        var b2 = new { DaysOfWeek = 2 };
        var b = new[] { b1, b2 };
        var filter = 1;

        var l = b.Where(o => (filter & o.DaysOfWeek) != 0);
        foreach (var x in l)
        {
            Console.WriteLine(x);
        }
Run Code Online (Sandbox Code Playgroud)

如果您有一组过滤器值,只需将OR组合,然后|首先使用OR :

        var filterArray = new []{1, 4};
        var filter = filterArray.Aggregate((x, y) => x | y);
Run Code Online (Sandbox Code Playgroud)