IEnumerable Any()带有一个简单的int []

时间:2011-06-10 20:54:44

标签: c# arrays ienumerable any entitycollection

快速提问:我正在将EF4 EntityCollection中的实体ID与循环中的简单int []进行比较。我想做点什么:

for (int i = 0; i < Collection.Count; ++i)
{
    Array.Any(a => a.value == Collection[i].ID) ? /* display yes */ : /* display no */;
}

我只是不确定如何将数组中的值与EntityCollection中的值进行比较,换句话说,比较实际使用的是什么,而不是我上面构造的value属性。

2 个答案:

答案 0 :(得分:1)

跳过循环,你可以做这样的事情

array.Any(a => collection.Any(c => c.ID == a)) ? /* display yes */ : /* display no */;

如果您需要循环,那么您可以跳过上面的第二个Any()并执行

array.Any(a => collection.ElementAt(i).ID == a) ? /* display yes */ : /* display no */;

答案 1 :(得分:1)

代码应修改为:

int[] arr = //this is the integer array
IEnumerable Collection = //This is your EF4 collection
for (int i = 0; i < Collection.Count; ++i)
{
    arr.Any(a => a == Collection[i].ID) ? /* display yes */ : /* display no */;
}

我在顶部调出了一些变量,所以我们清楚知道什么是什么。改变的主要部分是,我们调用Array.Any而不是调用arr.AnyAnyint[]的扩展方法,因此您可以在数组本身上调用它,而不是在类Array上调用它。

这是否解决了这个问题?