2011-07-07 20 views
2

選擇類型對象,我有LINQ樣本:從列表

Dim objectsList as List(Of Object) = GetAllObjects() 

' Filter from Objects just Persons ' 
Dim peopleList as List(Of Person) = ??? 

什麼是最有效的LINQ表達辦呢?

EDIT

1 Dim selectedObjects As List(Of Object) = GetAllObjects() 
2 Dim selectedPeople As IEnumerable(Of Person)= selectedObjects.OfType(Of Person) 
3 Dim people As List(Of Person) = selectedPeople.ToList() 

錯誤3:

類型的值 'System.Collections.Generic.List(中 System.Collections.Generic.IEnumerable(人))'不能被 轉換爲 'System.Collections.Generic.List(Of Person)'。

回答

4

聽起來像是你想Enumerable.OfType()

Dim peopleList as List(Of Person) = objectsList.OfType(Of Person)().ToList() 
+0

其實,你獲得一個IEnumerable,而不是列表(Of),但非常酷! )謝謝) – serhio

+0

@serhio'ToList()'是否能最後一步 –

0

在C#這將是

ObjectList.OfType<Person>() 

VB.NET中是類似的東西

1

effecient的方法是在原點過濾(例如,在數據庫查詢點,例如),沒有一次我們在內存中的對象,但:

Dim peopleList as List(Of Person) = objectsList.OfType(Of Person)().ToList() 

或C#(注意,這是相同的編譯一次):

var peopleList = objectsList.OfType<Person>().ToList(); 
+0

你能看到我的編輯?哪裏有問題?? – serhio