2010-08-16 63 views
0

这是我的代码: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节点列表中的值一起使用时会在结果集中产生大量行。

问题是,无论在执行直通代码时生成多少结果,list始终为空。

为什么会这样,我应该怎么做才能获得我正在寻找的汽车列表?

回答

1

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

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

您需要将新的序列分配给list变量,就像这样:

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