Использование Contains () для коллекции анонимных типов - PullRequest
4 голосов
/ 21 июня 2011

Я все еще изучаю LINQ, и у меня есть коллекция анонимных типов, полученных с использованием чего-то вроде следующего. [mycontext] является заполнителем для моего фактического источника данных:

var items = from item in [mycontext]
            select new { item.col1, item.col2, item.col3 };

Как я могу использовать items.Contains(), чтобы определить, содержит ли items совпадающее значение?

Я ищу значение , а не анонимного типа. Поэтому мне нужно написать собственную логику сравнения, предпочтительно в виде лямбда-выражения.

Ответы [ 3 ]

4 голосов
/ 21 июня 2011

Если вы предпочитаете использовать предикат, тогда вам, вероятно, лучше использовать Any вместо Contains:

bool exists = items.Any(x => x.col1 == "foo"
                             && x.col2 == "bar"
                             && x.col3 == 42);
3 голосов
/ 21 июня 2011

Попробуйте метод LINQ Any():

if (items.Any(i => i.col1 == myOtherThing.Value))
{
    // Effectively Contains() == true
}
2 голосов
/ 21 июня 2011

Или вы можете использовать любой метод с предикатом.

bool exists = items.Any( i => {logic} );
...