【问题标题】:Unable to create Anonymous Type with two same name property无法创建具有两个相同名称属性的匿名类型
【发布时间】:2015-01-23 21:09:25
【问题描述】:

我有一个简单的 linq 查询,带有匿名类型的 join 语句结果。问题是两个属性具有相同的名称。如何让它工作。 假设我有以下代码

Dim retQry = From cb In _entityCtx.CandyBars
             Join soda in _entityCtx.Drinks
             On cb.Id Equals soda.Id
             Select cb.Id, Soda.Id, Soda.Price, cb.Name

我收到错误 Range variable Id is already declared。

更新:发现 microsoft 文档仅显示使用属性名称,因此“Id”是传递的字段。 在查询快递的匿名类型中 https://msdn.microsoft.com/en-us/library/bb384767.aspx

【问题讨论】:

  • 不确定语法,但您可以显式指定属性名称。所以使用cbId和SodaId,在C#中就像select new { cbId = cb.Id, SodaId = soda.Id....
  • Select new { cbid = cd.Id, sodaid= Soda.Id, ... ?
  • 感谢 Habib、Giorgos 和 dotnetom。

标签: linq-to-entities vb.net-2010 anonymous-types


【解决方案1】:

您不能使用 2 个同名的属性,但您可以使用 select 并创建具有不同名称的 2 个属性的匿名类型,如下所示:

Select New With {.cbId = cb.Id, .SodaId = Soda.Id, .Price = Soda.Price, .Name = cb.Name}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多