2013-11-01 47 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的! :)