IQueryable成员方法不行吗?

时间:2010-08-16 13:49:06

标签: union iqueryable

这是我的代码:

    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始终为空。

为什么这样做以及如何获取我正在寻找的汽车列表呢?

1 个答案:

答案 0 :(得分:1)

与所有LINQ方法一样,Union方法返回包含联合结果的新IQueryable<T>
它不会修改原始实例。

因此,当您编写list.Union(a.ToList())时,您正在创建一个包含所有汽车的新IQueryable<Car>,但不会对其进行任何操作。
列表变量不会改变。

您需要将新序列分配给list变量,如下所示:

list = list.Union(a.ToList());