IEnumerable Any() с простым int[]
Быстрый вопрос: я сравниваю идентификаторы сущностей в коллекции EF4 EntityCollection с простым int[] в цикле. Я хотел бы сделать что-то вроде:
for (int i = 0; i < Collection.Count; ++i)
{
Array.Any(a => a.value == Collection[i].ID) ? /* display yes */ : /* display no */;
}
Я просто не уверен, как сравнить значение в массиве со значением из EntityCollection, или, другими словами, что использовать для реального вместо свойства значения, которое я составил выше.
2 ответа
Код должен быть изменен следующим образом:
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
,
Решает ли это проблему?
Пропустить цикл, и вы можете сделать что-то вроде этого
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 */;