【问题标题】:LINQ Select: different projects same code different resultsLINQ Select:不同的项目相同的代码不同的结果
【发布时间】:2009-12-16 22:46:10
【问题描述】:

两个不同网站上的相同代码(在同一个解决方案上),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和输出2是一样的...
  • 是否有可能其他代码在匿名对象构造函数中使用了不同的大小写?
  • @Fabian - 不同的是属性名称,而不是数据。
  • 你能展示一下StaticData类吗?另外,大小写差异对您的应用有什么影响?
  • Lazarus,JavaScript 区分大小写。因此这两个 JSON 对象是不兼容的。

标签: .net linq linq-to-objects


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    相关资源
    最近更新 更多