C#实体框架:如何筛选包含特定行为字母的5个行为列



我有一个使用实体框架的C#Winforms应用程序。我在表单上有一些按钮,用来从数据库中查询各个行为类型。该表有5列,可以包含不同的行为字母,因此如果每个记录中包含该字母,我需要搜索每个列。

这是我的代码:

public static List<Behaviors_Collection> BxButtonPush(string BX, string client)
{
DateTime startdate = DateTime.Parse("06-01-2021");
using (DBEntities context = new DBEntities())
{
List<Behaviors_Collection> GetBXData = context.Behaviors_Collection.Where(
x => x.BX1 == BX 
|| x.BX2 == BX || x.BX3 == BX || x.BX4 == BX 
|| x.BX5 == BX && x.Client == client 
&& x.Date >= startdate).ToList();
return GetBXData;
}
}

我是C#编程的新手,所以我不完全确定如何真正做到这一点。我的尝试返回了368条与任何参数都不匹配的记录。

我该如何更好地编写它,以便它返回正确的数据。任何建议都会很有帮助,谢谢。

这是运算符优先级的问题。CCD_ 1与CCD_。你需要在你的ORs上加上一个偏执狂。参见此处

public static List<Behaviors_Collection> BxButtonPush(string BX, string client)
{
DateTime startdate = DateTime.Parse("06-01-2021");
using (DBEntities context = new DBEntities())
{
List<Behaviors_Collection> GetBXData = context.Behaviors_Collection.Where(x =>
(x.BX1 == BX || x.BX2 == BX || x.BX3 == BX || x.BX4 == BX 
|| x.BX5 == BX) &&
x.Client == client && x.Date >= startdate).ToList();
return GetBXData;
}
}

最新更新