2011-10-28 20 views
7

Estoy tratando de encontrar una consulta linq para que pueda escribirla en una declaración if.lista contiene un ID en linq

pseudo código:

IDList es una lista de enteros Lista < int>

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

pero me parece que no puede trabajar en lo necesitan.

En ninguno-LINQ esto funciona:

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

pero lo quiero como una línea si es posible.

intentó por primera vez este:

IDList.Contains(Object.Id); 

pero esto genera un error de compilación

Me pregunto que debería ser uno de estos dos?

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

o

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

No entiendo completamente cómo funcionan las cosas y lambdas o la diferencia entre Andy y existe así que no estoy seguro si estoy lo largo de la línea equivocada?

+0

Lo que quiere hacer puede explicarlo lógicamente porque esto no está claro en la pregunta – Ankur

Respuesta

17

Usted puede simplemente hacer esto:

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

Suponiendo que MyList es un IEnumerable<T> (o cualquier cosa que se deriva de IEnumerable<T>) donde T es un objeto que tiene una propiedad denominada Id del mismo tipo de la propiedad Id en la instancia MyObject.

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

está bien, se volverá true si al menos uno de los elementos, que satisface el predicado, existe.