2011-10-28 18 views
7

Próbuję znaleźć kwerendę linq, więc można go zapisać w instrukcji if.lista zawiera identyfikator w linq

Pseudo kod:

obiektu IDList jest lista Lista INTS < int>

if (IDList.Contains (Object.Id)) Do something 

ale nie wydają się działać, co trzeba.

W None-LINQ to działa:

foreach(int id in IDList) 
    { 
     if (id == Object.Id) 
      break; 
    } 

ale chcę go jako jednej linii, jeśli to możliwe.

raz pierwszy próbowałem:

IDList.Contains(Object.Id); 

ale ten wyrzuca błąd kompilacji

Zastanawiam powinno być jedną z tych dwóch?

IDList.Any(id => id == Object.Id) 

lub

IDList.Exists(id => id == Object.Id); 

nie całkowicie zrozumieć, jak to wszystko działa i lambda lub różnica pomiędzy Andy i istnieje, więc nie jestem pewien, czy jestem po niewłaściwej linii?

+0

Co chcesz zrobić, możesz wyjaśnić to logicznie, ponieważ nie jest to jasne w pytaniu – Ankur

Odpowiedz

17

Można po prostu to zrobić:

if (MyList.Any(c => c.Id == MyObject.Id)) { } 

Zakładając, że MyList jest IEnumerable<T> (lub cokolwiek, co pochodzi od IEnumerable<T>) gdzie T jest obiektem, który ma właściwość o nazwie Id tego samego typu nieruchomości Id w instancji MyObject.

5
IDList.Any(id => id == Object.Id) 

jest OK, to zwróci Ci true jeżeli co najmniej jeden element, który spełnia swoje orzeczenie, istnieje.