我有一个使用实体框架的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;
}
}