Подтвердить что ты не робот

Проверка того, содержит ли список объектов свойство с определенным значением

Скажем, у меня есть следующий код:

class SampleClass
{
    public int Id {get; set;}
    public int Name {get; set;}
}
List<SampleClass> myList = new List<SampleClass>();
//list is filled with objects
...
string nameToExtract = "test";

Итак, мой вопрос заключается в том, какую функцию List можно использовать для извлечения из myList только объектов, у которых есть свойство Name, которое соответствует моей строке nameToExtract.

Я заранее извиняюсь, если этот вопрос действительно прост/очевиден.

4b9b3361

Ответ 1

Вы можете использовать Enumerable.Where метод расширения:

var matches = myList.Where(p => p.Name == nameToExtract);

Возвращает IEnumerable<SampleClass>. Предполагая, что вы хотите отфильтровать List, просто вызовите .ToList() по указанному выше.


Кстати, если бы я писал код выше сегодня, я бы делал проверку равенства по-разному, учитывая сложности обработки строк в Юникоде:

var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture));

См. также

Ответ 2

myList.Where(item=>item.Name == nameToExtract)

Ответ 3

using System.Linq;    
list.Where(x=> x.Name == nameToExtract);

Изменить: неверный вопрос (теперь все совпадения)

Ответ 4

В дополнение к другим ответам, предлагающим LINQ, другой альтернативой в этом случае будет использование метода экземпляра FindAll:

List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract);

Ответ 5

Вы должны взглянуть на Reflection API. Это метапространство имен с информацией о самом классе. Вы можете спросить наследование интерфейса и все.

http://msdn.microsoft.com/en-us/library/z919e8tw%28v=vs.80%29.aspx