【发布时间】:2014-05-22 13:11:14
【问题描述】:
我有一个动态数据列表。我想遍历列表以创建 where 子句。我怎么做?
IQueryable<MyObject> result = originalData;
foreach (var item in Years)
{
result = input.Where(x => x.Year == item).AsQueryable();
}
2013 应该有 30,2014 应该有 18。我的结果应该是 48 时只给出 18。有什么想法吗?
编辑
我应该提到我知道我正在覆盖结果。我尝试了 += 并且我得到了 '+=' 不能应用于 IQueryable(MyObject> 和 IQueryable(MyObject>
的操作数) 的错误【问题讨论】:
-
结果+=表达有效吗?或者你对结果做了什么?
-
您将第一个循环的结果替换为第二个循环的结果。
-
result += input.Where(x => x.Year == item).AsQueryable();
-
您正在关闭一个循环变量。到执行 lambda 时,loop var 将采用它的最终值。为了避免这种情况,请将 llop 变量复制到本地,例如在循环体
var year = item中的 fitt 行上 -
@HAbib。包含正是我需要的。谢谢!
标签: c# asp.net .net linq lambda