2012-01-30 9 views
6

Tengo una lista maestra de objetos complejos.Linq Select Subconjunto de la lista maestra

Tengo una lista de int ids que necesito para seleccionar el objeto complejo correspondiente fuera de la lista maestra.

esto no funciona

MasterListofComplexObj.Where(u => MasterListofComplexObj.Select(i => i.Id).Contains(ChildListofIntIds)); 

cualquier ayuda se agradece.

+0

¿Aparece un error? ¿O resultados incorrectos? ¿Podría darnos algunos valores de entrada y el resultado que espera? –

Respuesta

20

esto debería funcionar:

var results = MasterListofComplexObj.Where(u => ChildListofIntIds.Contains(u.Id)); 
+0

estás en .... gracias por la ayuda. en mi opinión, la lógica se invierte un poco, tomas la lista de niños y ves si contiene la identificación de que estás seleccionando de la lista de mástiles. gracias de nuevo – jim

+0

sí, la sintaxis no es lo que esperarías intuitivamente, pero ya que estás viendo cada 'ComplexObj' uno por uno tiene sentido – BrokenGlass

1
var results = from obj in MasterListofComplexObj 
    where ChildListofIntIds.Contains(obj.Id) 
    select obj; 

Este es un IEnumerable. Es posible que desee .FirstOrDefault() para obtener un objeto.

traduce en MasterListofComplexObj.Where (item => ChildListofIntIds.Contains (item.Id))

No se seleccione necesario si desea que el objeto en sí y no una de sus propiedades.

1

La otra cosa más general para estudiar serían Ingreso:

var results = MasterList.Join(ChildList, (m => m.Id), (c => c), ((m,c) => m)); 

creo, pero no puede realizar copias de seguridad con la citación o datos experimentales, que se unen sería más rápido que el Donde -> Contiene pieza .