【发布时间】:2020-05-19 14:16:09
【问题描述】:
我的代码在数组长度==1 时有效。 当我的数组长度大于 1 时,我得到错误的列表数据。
var classtime = PredicateBuilder.True<ServiceManual>();
for (int i = 0; i < Category.Length; i++)
{
long? cateID = Convert.ToInt64(Category[i]);
if (Category.Length == 1)
{
classtime = classtime.And(i => i.CategoryID == cateID);
}
else
{
classtime = classtime.Or(i => i.CategoryID == cateID);
}
}
var lstclasssCate = context.tblServiceManual.Where(classtime.Compile()).ToList();
【问题讨论】:
-
您是否知道在 Category.Length==1 和 Category.Length !=1 时添加了相同的 And 子句
-
是的,但我使用的是课堂时间。或者,我也得到了错误的列表数据。我更新代码
-
只是一个提示,当您重用相同的变量名时,阅读代码会更加困难,请考虑更改
classtime.And(i => i.CategoryID == cateID):以使用其他变量名而不是迭代变量,例如classtime.And(ct => ct.CategoryID == cateID); -
错误列表数据是什么意思?您是否尝试过调试代码以确保 classTime.compile 的结果包含预期的条件?
-
意味着我正在获取所有列表数据而不是这些 ID 数据。
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-core asp.net-web-api