2013-11-01 46 views
-1

我的一個api將返回ICollection結果,我想在不使用System.Linq的情況下在我的代碼中讀取它們。有可能嗎?如何閱讀Collection.System.Collections.Generic.ICollection項目

添加更多--- 當我使用Linq時,ICollection.First()。值很好..我想要的方式應該像使用Linq一樣工作。

感謝 帕

+0

說明「閱讀」。? –

+0

爲什麼不只是一個基本的'IEnumerable'? – Arran

+0

'.First'是LINQ的一部分....你想要沒有LINQ的LINQ?! – Arran

回答

5

是的,你可以簡單地使用foreach循環。

編輯:要訪問特定的元素,您可以像使用其他答案一樣使用索引訪問。如果你需要一個特定的條件下,你可以遍歷集合

ICollection<TYPE> collection = YourApi(); 
TYPE result; 

foreach(var x in collection) 
{ 
    if(your condition is true) 
    { 
     result = x; 
     break;  
    } 
} 

// check if result is not null and use it 
+0

一樣讀取元素/項目? –

1

使用foreach循環:

foreach(var elem in mycollection) 
{ 
    // do stuff 
} 

編輯:

對於ICollection.First(),你可以這樣做:

if (mycollection.Count > 0) 
    var firstItem = mycollection[0]; 
1

ICollection延伸IEnmerable。這意味着它返回一個枚舉器,並可以循環使用ForEach循環。這不需要Linq

0

任何支持LINQ查詢的對象也支持foreach。您可以使用的foreach:

foreach(item in collection) 
{ 
    //work with item 
} 
0

正如其他人指出的那樣,你可以使用的foreach來訪問所有元素的收藏。你一直說「我想讀取特定元素就像ICollection.First()。Value」。

如果你想模仿優先()的功能,你需要編寫一個擴展方法ICollection的:

public static class ExMethods 
{ 
    public static object First<T>(this ICollection<T> collection) 
    { 
    foreach (var x in collection) 
    { 
     return x; 
    } 
    //throw exception if colletion is empty 
    } 
} 

或者只是使用LINQ的! :)