我读了一本 linq 书,但不明白为什么
customers.where(function(x) x.city = "London").Select(function(y) new with{y.CompanyName, y.Country})
Run Code Online (Sandbox Code Playgroud)
有效(创建一个匿名类型,我明白了)但是
customers.where(function(x) x.city = "London").select(function(y) y.countryname, y.country)
Run Code Online (Sandbox Code Playgroud)
不起作用。难道不能在选择查询中选择多个字段吗?
原因是:第二个不是创建匿名类型的有效语法。
所以这:
new with{y.CompanyName, y.Country}
Run Code Online (Sandbox Code Playgroud)
创建一个具有两个属性的匿名类型,而这
y.countryname, y.countr
Run Code Online (Sandbox Code Playgroud)
除了编译器错误之外什么也没有产生。
如果您创建一个类Company并提供一个构造函数,例如:
Public Class Company
Public Sub New(companyName As String, countryName As String)
Me.Country = countryName
Me.Name = companyName
End Sub
Public Country As String
Public Name As String
End Class
Run Code Online (Sandbox Code Playgroud)
现在您可以使用此语法来创建一个IEnumerable(Of Company):
Dim companies = customers.
Where(Function(x) x.city = "London").
Select(Function(x) New Company(x.CompanyName, x.Country))
Run Code Online (Sandbox Code Playgroud)
或者在查询语法中(我更喜欢 VB 中的语法):
Dim companies = From c In customers
Where c.City = "London"
Select New Company(c.CompanyName, c.Country)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12692 次 |
| 最近记录: |