【问题标题】:Linq GroupBy().Select() with complex type - can't work out syntax具有复杂类型的 Linq GroupBy().Select() - 无法计算出语法
【发布时间】:2016-02-10 02:46:33
【问题描述】:

我有多个对象的复杂连接,这导致填充的交叉点对象的“列表”...

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() 给出“Ambiguous”错误。

我迷路了!这是我无法理解的 linq 的一部分,有人可以帮我解决这个问题的语法吗,我只是找不到任何可以让我正确的可比示例。

非常感谢。

【问题讨论】:

标签: c# linq


【解决方案1】:

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

@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()
                       });

现在它起作用了,我只需要完全理解它(!)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多