LINQ选择:不同的项目相同的代码不同的结果

时间:2009-12-16 12:57:43

标签: .net linq linq-to-objects

两个不同网站(在同一解决方案上)的相同代码,VB.Net(框架3.5)。

守则:

Public Class UserTest
    Public hhh As Integer
    Public fff As String

    Public Sub New(ByVal hh As Integer, ByVal ff As String)
        Me.hhh = hh
        Me.fff = ff
    End Sub

End Class

        Dim lst As List(Of UserTest) = New List(Of UserTest)
        lst.Add(New UserTest(1, "x"))
        lst.Add(New UserTest(2, "y"))

        Dim myData = lst.Select(Function(o) New With {.id = o.fff, .name = o.hhh})

一个选择返回属性的名称,大写字母另一个没有。

alt text http://img8.imageshack.us/img8/4509/linqbug1.jpg

我尝试更改属性名称,根本没有大写字母。

Dim myData = lst.Select(Function(o) New With {.prop1 = o.fff, .prop2 = o.hhh})

alt text http://img695.imageshack.us/img695/5231/linqbug2.jpg

感谢。

1 个答案:

答案 0 :(得分:1)

在您发布的代码示例中,匿名对象初始值设定项中的属性名称使用小写的第一个字母编写。你确定其他网站的代码真的是一样的吗?我怀疑它使用大写的第一个字母:

Dim ggg = StaticData.GetLocationsByText(data, CountryId).Select( _
 Function(o) New With { _
 .Id = o.UniqueLocation, _
 .Text = o.DisplayLocation}).ToList()