【问题标题】:Is there some way to simplify access to the first member of a group in a LINQ GroupBy query?是否有某种方法可以简化对 LINQ GroupBy 查询中组的第一个成员的访问?
【发布时间】:2021-08-27 09:50:15
【问题描述】:

我有以下通过站点收集结果的 LINQ 语句:

        var groupedSites = ungroupedSites.AsEnumerable()
                    .GroupBy(_ => _.s.SiteUid)
                    .Select(g => new MySites {
                            Title = g.First().sd.Title,
                            Classification = g.First().s.Classification,
                            Service = g.First().p.ServiceGateway,
                                   etc.
                        });

“MySites”的初始化程序中还有十几个使用 g.First() 的属性。有没有更好的方法(比 g.First())我可以访问该组的第一项?理想情况下,最好有一个变量:

var first = g.first()

然后使用它。

【问题讨论】:

  • 是的,使用查询语法和let
  • @GertArnold 或使用Select 将查询语法let 转换为流畅的语法以创建新的匿名类型。
  • 是的,但是let 具有变量的外观和感觉。

标签: linq group-by linq-to-entities


【解决方案1】:

你可以通过额外的Select来做到这一点:

var groupedSites = ungroupedSites.AsEnumerable()
    .GroupBy(_ => _.s.SiteUid)
    .Select(g => g.First())
    .Select(f => new MySites {
            Title = f.sd.Title,
            Classification = f.s.Classification,
            Service = f.p.ServiceGateway,
                    etc.
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2021-06-27
    相关资源
    最近更新 更多