2010-11-16 20 views
14

Listem var (MyType) ve listenin bir alt kümesini almak için LINQ kullanmak istiyorum.Nasıl kullanılır Genel liste listesinde

MyType üzerinde AccountNumber adlı bir alan var. Böyle bir şey söylemek için LINQ kullanabilir miyim?

Dim t As List(Of MyType) 
t = GetMyTypes() 
t = t.Where(AccountNumber = "123") 

Teşekkür

Neredeyse geldin

cevap

30

.

Dim result = From t In GetMyTypes() Where t.AccountNumber = "123" 

döndürülen veri türü değildir:

Dim t As List(Of MyType) 
t = GetMyTypes() 
Dim result = t.Where(Function(x) x.AccountNumber = "123") 

Alternatif ayrıntılı LINQ sözdizimi kullanabilirsiniz: kod aşağıdaki gibi görünmelidir böylece Where ihtiyaçlarının argüman, bir işlev olmak List(Of MyType) ancak bir IEnumerable(Of MyType), böylece onu doğrudan List(Of MyType) olarak bildirilen bir değişkene atayamazsınız. Bir liste oluşturmak istiyorsanız, result.ToList()'u kullanarak "dönüştürebilirsiniz". Bu da list to be evaluated immediately'a neden olur.

+0

Buna eklemeye gerek olup olmadığından emin değilsiniz ... .Where() için bir İlk .First eklenmemesi bunu biraz daha iyi hale getirir mi? – Feign

+2

@Feign: Gerçekten neyi başarmak istediğinize bağlıdır: ** 123 numaralı hesap numarasıyla ** ilk ** girişini istiyorsanız, 'First' ifadesini kullanın (bir 'Order By' cümlesi eklemek bu durumda yararlı olabilir, gerçi). ** ** hesap numarası olan tüm ** girişlerin bir listesini istiyorsanız, 'ToList' kullanın. – Heinzi

+1

teşekkürler! Bu yolla .Where() kullandığınızı bilmiyordum. – Feign

İlgili konular