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 */;
Другие вопросы по тегам