Linq GroupBy().具有复杂类型的 select() - 无法计算语法

本文关键字:计算 select 语法 类型 GroupBy 复杂 Linq | 更新日期: 2023-09-27 18:33:53

我有一个由许多对象组成的复杂连接,这会导致填充的交集对象的"列表"......

class Intersect
{
    public Subject Subj { get; set; }
    public Article Art { get; set; }
    public TopicArticle TopArt { get; set; }
    public Topic Top { get; set; }
}
var intersections = System
    .Where(s => s.SystemID == systemID)
    .Join(Subject,
<snip>

该部分工作正常,组装的数据是正确的。接下来我要做的是按 Top.ID 分组,同时返回 Count(Sys.ID) 和 Top.Name。 我明白了...

intersections.GroupBy(g => g.Top.ID)

。但是.Select() 给出错误"类型参数无法从用法中推断出来。尝试显式指定类型参数",然后显示两个替代项 - 一个用于 IQueryable,一个用于 IEnumerable。 同样。Count() 给出一个"不明确"错误。

我迷路了!这是 linq 的一部分,超出了我的范围,有人可以帮我解决这个问题的语法吗,我只是在任何地方都找不到可以让我正确的类似示例。

非常感谢。

Linq GroupBy().具有复杂类型的 select() - 无法计算语法

终于设法找到了一组合适的帖子,使我能够为此构建解决方案。

@hkf没有看到那个,但它有助于确认我走在正确的轨道上,为此欢呼。

我想出的解决方案(在很大程度上要感谢 LinqPad)...

    .GroupBy(q => new {q.Top.Name, q.Top.TopicID })
    .Select(group => new
                       {
                           id = group.Key.TopicID,
                           name = group.Key.Name,
                           count = group.Count()
                       });

现在它可以工作,我只需要完全理解它(!