这是我的代码:
IQueryable<Car> list = new List<Car>().AsQueryable<Car>();
foreach (TreeNode node in DataHierarchyTree.CheckedNodes)
{
var a = from c in ContextDB.Cars
where c.CarID == Int32.Parse(node.Value)
select c;
list.Union(a.ToList());
}
CarGridView.DataSource = list;
CarGridView.DataBind();
这没什么。我用停止点运行它,它迭代5次。如果我检查a
值,则会生成一个SELECT语句,当与checked nodes列表中的值一起使用时,会在结果集中产生大量行。
问题在于,无论在执行代码时产生了多少结果,list
始终为空。
为什么这样做以及如何获取我正在寻找的汽车列表呢?
答案 0 :(得分:1)
与所有LINQ方法一样,Union
方法返回包含联合结果的新IQueryable<T>
。
它不会修改原始实例。
因此,当您编写list.Union(a.ToList())
时,您正在创建一个包含所有汽车的新IQueryable<Car>
,但不会对其进行任何操作。
列表变量不会改变。
您需要将新序列分配给list
变量,如下所示:
list = list.Union(a.ToList());