【问题标题】:Return additional column in Linq Query?在 Linq 查询中返回附加列?
【发布时间】:2017-11-17 21:15:44
【问题描述】:

我有这个 Linq 查询:

var area = db.MyDbSet
    .Where(s => s.langid == langid)
    .GroupBy(s => s.Title)
    .Select(g => new { Title = g.Key })
    .Select(s => s.Title);

我想从同一个表中返回另一列,其名称为:CodeId

我是新手 Linq 程序员,完全迷失在 C# 中的所有那些杂乱无章的东西中,所以我真的不明白我该怎么做。

有人可以帮助我如何使用相同的查询调用从同一个表中返回另一列吗?

【问题讨论】:

  • 只需在查询中添加列,如下所示:.Select(g => new { Title = g.Key , CodeId = g.propertyName})

标签: c# linq entity-framework-4


【解决方案1】:

这可能对你有帮助:

 var area = db.MyDbSet
                    .Where(s => s.langid == langid)
                    .GroupBy(s => s.Title)
                    .Select(g => new { Title = g.Key, CodeId = g.FirstOrDefault().CodeId });

【讨论】:

  • FirstOrDefault 会做什么?只取一个值?但是当我输入 s.CodeId 时,我没有在下一行看到 CodeId。它在当前上下文中不存在。
  • 这里查询会按 Title 对数据进行分组,groupby 之后会返回该组的第一个 CodeId。
【解决方案2】:
var area = db.MyDbSet
    .Where(s => s.langid == langid)
    .GroupBy(s => s.Title)
    .Select(g => new { 
      Title = g.Key,
      CodeId = g.Id,
      OtherField = "Field"
    })

【讨论】:

  • 原来我的模型有问题,所以 g.CodeId 不可见。
  • 我在这个表中有两个key,langid和CodeId,所以分别用[Key, Column(Order = 0)]和[Key, Column(Order = 1)]标记应该做点额外的在我的查询中,或者问题出在我的模型中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
相关资源
最近更新 更多