LINQ示例:从列表中选择键入的对象

时间:2011-07-07 12:53:44

标签: .net vb.net linq

我有

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

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

最有效和最有效的LINQ表达式是什么?

修改

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(Of Person))'不可能   转换成   'System.Collections.Generic.List(Of Person)'。

3 个答案:

答案 0 :(得分:4)

听起来像你想要的Enumerable.OfType()

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

答案 1 :(得分:1)

有效的方法是在原点(例如,在数据库查询点)进行过滤,而不是在内存中有对象,但是:

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

或在C#中(注意编译后这是相同的):

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

答案 2 :(得分:0)

在C#中它将是

ObjectList.OfType<Person>()

VB .Net将是类似的东西