题 如何使用。在通用列表中


我有一个List(Of MyType),我想使用LINQ获取列表的子集。

在MyType上有一个名为AccountNumber的字段。我可以使用LINQ这样说吗?

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

谢谢


15
2017-11-16 18:58


起源




答案:


你快到了。的论点 Where 需要成为一个 功能,所以你的代码应该是这样的:

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

或者,您可以使用详细的LINQ语法:

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

返回的数据类型不是a List(Of MyType) 但是 IEnumerable(Of MyType),所以你不能直接将它分配给声明为的变量 List(Of MyType) 。如果要创建列表,可以使用“转换”它 result.ToList()。这也会导致 要立即评估的列表


31
2017-11-16 19:01



不确定是否可以添加到此...不会添加.First(。)使这更好一点吗? - Feign
@Feign:这取决于你想要达到的目标:如果你想要的话 第一 使用帐号输入 123, 使用 First (添加一个 Order By 但是,在这种情况下,子句可能很有用。如果你想 所有的清单 有帐号的条目 123 , 使用 ToList。 - Heinzi
谢谢!我不知道你以这种方式使用.Where()。 - Feign