快速提问:我正在将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属性。
答案 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.Any
。 Any
是int[]
的扩展方法,因此您可以在数组本身上调用它,而不是在类Array
上调用它。
这是否解决了这个问题?