IEnumerable Any () с простым int [] - PullRequest
2 голосов
/ 11 июня 2011

Быстрый вопрос: я сравниваю идентификаторы сущностей в 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 ]

1 голос
/ 11 июня 2011

Код следует изменить следующим образом:

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.

Решает ли это проблему?

1 голос
/ 11 июня 2011

пропустите цикл, и вы можете сделать что-то вроде этого

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