gpt4 book ai didi

linq - C#EF Linq按位问题

转载 作者:行者123 更新时间:2023-12-04 07:11:23 25 4
gpt4 key购买 nike

好的,例如,我正在使用类似的按位计算:星期一= 1,星期二= 2,星期三= 4,星期四= 8等等...

我正在使用业务的 Entity Framework 类。

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

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

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

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

编辑

好的,所以我尝试以下操作:
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();

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

最佳答案

使用按位运算符&将所需的标志与数据库中的实际标志合并,然后检查结果是否为非零。

        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);
}

如果您有一个简单组合的过滤器值数组,则先与OR |组合:
        var filterArray = new []{1, 4};
var filter = filterArray.Aggregate((x, y) => x | y);

关于linq - C#EF Linq按位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com