2010-08-16 65 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());