2014-01-08 53 views
3

我想查詢數據庫並獲取類別列表(我正在使用Linq查詢語法)。然後遍歷該類別的列表以用於我的C#代碼。這看起來應該是相對容易的,但到目前爲止,我只是找到了在視圖中顯示結果的示例。如何在代碼中使用結果?通過LINQ結果列表進行迭代

+0

你能告訴我們你試過了嗎?或者可能是一些僞代碼,顯示你想要實現的內容 – Moeri

回答

8

您可以簡單地用一個foreach

foreach(var category in categories) 
{ 
    // do something with it 
} 

如果你要堅持它的內存中的集合通過索引來訪問它,你可以創建通過Enumerable.ToArrayEnumerable.ToList數組或列表,例如:

​​

現在您還可以對其進行修改。

categoryList[index] = otherCategory; 

,或者你可以使用一個for -loop代替:

for(int index = 0; index < categoryList.Count; index++) 
{ 
    Category cat = categoryList[index]; 
    //do something 
} 
+0

如何將第一個結果放入變量中?例如,如果我迭代了一個數組,它會是:String myVar = Catigory [i] – user800426

+0

@ user800426'string myVar = category;' –

+0

我做了一件非常相似的事情 - 用for循環迭代LINQ表達式的結果集,而我的老闆說在LINQ表達式之後,在原始表達式中使用LINQ而不是循環。 – James

2

我想補充另一種選擇,你也可以使用一個for循環:

for(int i = 0; i < categories.Count(); i++) 
{ 
    var thisElement = categories.ElementAt(i); 
} 

雖然有點少讀了循環通常要快得多(儘管它在很大程度上取決於IEnumerable的基礎類型)。

+2

你不應該在查詢本身上使用'for'''循環。相反,你應該從它創建一個集合。否則,你在每次迭代(和'categories.Count()')上執行查詢。因此,如果'categories'是一個數據庫查詢(它是),那麼您正在查詢返回的每條記錄上執行它,只是爲了到達下一個索引處的元素。 –

+0

感謝您的澄清! – Liath

3

您還可以將代碼添加到Linq查詢中。例如:

var numbs = new int[] { 1, 2, 3, 4, 5, 6 }; 

numbs.Select(i => { 

    SomeMethod(i); 
    return i; 

}); 

然後,您還可以選擇新結果或修改結果並將它們存儲到現有數組中。例如

var numbs = new int[] { 1, 2, 3, 4, 5, 6 }; 

var multList = numbs.Select(i => { 

    var mult = MultiplyBy2(i); 
    Console.Write("New Number: " + mult); 
    return mult; 
});