2012-01-30 18 views
6

Mam główną listę złożonych obiektów.Linq Wybierz podzbiór listy głównej

Mam listę int i potrzebnych do wybrania odpowiedniego obiektu złożonego z listy głównej.

to nie działa

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

Każda pomoc będzie mile widziane.

+0

Czy pojawia się błąd? Lub złe wyniki? Czy możesz podać wartości wejściowe i oczekiwaną wydajność? –

Odpowiedz

20

To powinno działać:

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

jesteś w .... dzięki za pomoc. w mojej głowie logika jest odwrotna, bierzesz listę dzieci i widzisz, czy zawiera ona id twojego wyboru z listy masztów. jeszcze raz dziękuję – jim

+0

tak składnia nie jest tym, czego intuicyjnie oczekujesz - ale ponieważ patrzysz na każdy "ComplexObj" jeden po drugim, to ma sens – BrokenGlass

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

To IEnumerable. Możesz chcieć .FirstOrDefault() go, aby uzyskać jeden obiekt.

przekłada się MasterListofComplexObj.Where (pozycja => ChildListofIntIds.Contains (item.Id))

Nie Wybierz konieczne, jeśli chcesz sam obiekt, a nie jeden z jego właściwości.

1

Drugą rzeczą bardziej ogólnie przyjrzeć się będzie Zarejestrowany:

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

wierzę, ale nie mogą tworzyć kopie zapasowe danych z cytowania lub eksperymentalne, które łączą byłoby szybciej niż Gdzie -> Zawiera kawałek .

Powiązane problemy