2014-01-27 6 views
1

Я хотел узнать лучший способ (не LINQ и LINQ), чтобы проверить, содержит ли список элемент по его значению поля.Список Содержит по полю

public class A 
{ 
    public B bField; 
} 

public class B {} 

List<A> listA = new List<A>(); 
B someB = new B(); 
listA.Contains(someB) 
+1

Существует не так много способов, google для некоторых первых – VladL

ответ

1

вероятно Вы имели в виду:

listA.Any(x=> x.bField == someB); 
4

Использование Any

listA.Any(x => x.bField == someB); 
6

Не-Linq подход, простой цикл:

bool contains = false; 
foreach(A a in listA) 
{ 
    if(someB.Equals(a.bField)) 
    { 
     contains = true; 
     break; 
    } 
} 

Linq подход, используя Enumerable.Any :

Обратите внимание, что вам необходимо переопределить Equals значимым способом.

+0

Почему нет просто '=='? – abatishchev

+0

@DonBoitnott: почему бы и нет? – zerkms

+0

@zerkms Изъяли из-за правки, но причина, по которой они были не одного типа. – DonBoitnott

Смежные вопросы