Linq GroupBy()。具有复杂类型的Select() - 无法解决语法问题

时间:2016-02-10 02:46:34

标签: c# linq

我有许多对象的复杂连接,这导致了一个"列表"填充的交叉口对象......

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()给出了错误&#34; 无法从用法中推断出类型参数。尝试明确指定类型参数&#34;然后显示两个选项 - 一个用于IQueryable,另一个用于IEnumerable。同样.Count()给出一个&#34; 不明确的&#34;错误。

我输了!这是linq的一部分,超出了我,有人可以帮助我解决这个问题的语法,我无法找到一个可以让我正确的任何可比范例。

非常感谢。

1 个答案:

答案 0 :(得分:0)

最后设法找到一组合适的帖子,这使我能够为此建立一个解决方案。

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

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