2011-06-10 34 views
2

快速問題:我將EF4 EntityCollection中實體的ID與循環中簡單的int []進行比較。我想這樣做:IEnumerable任何具有簡單int []的Any()

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

我只是不知道如何的價值陣列內從EntityCollection的值進行比較,或者,換句話說,使用什麼真正的而不是我上面所做的價值屬性。

回答

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 */; 
} 

我在頂部調用了一些變量,所以我們明確什麼是什麼。改變的主要部分是我們調用arr.Any而不是調用Array.AnyAnyint[]的擴展方法,因此您可以在數組本身上調用它,而不是在類Array上調用它。

這是否解決了問題?

+1

這可能會導致從數據庫中提取所有行!這可能是一個性能問題。 – 2011-06-10 21:38:30

+0

在我的情況下,我想從數據庫中獲取所有行。這是故意行爲,只有10行左右被檢索到。這個特定的數據庫表永遠不會增長,所以沒關係。 – 2011-06-23 00:14:11

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 */; 
+0

不能跳過循環,因爲我正在循環中的實體做其他事情。 – 2011-06-10 21:08:04

+0

@ kevinmajor1啊我明白了。我添加了另一個可以與循環一起使用的剪切。 – 2011-06-10 21:10:31

相關問題