【问题标题】:LINQ Left Outer Join with Group By and Count Producing ErrorLINQ 左外连接与 Group By 并计数产生错误
【发布时间】:2011-10-06 02:54:19
【问题描述】:

我正在 LINQPad 中构造一个 LINQ 查询表达式,它使用左外连接、分组依据和计数。查询产生以下错误。

“AnonymousType#1”不包含“ContentTypeID”的定义 并且没有扩展方法'ContentTypeID'接受第一个参数 可以找到类型“AnonymousType#1”(按 F4 添加使用 指令或程序集引用)

这是查询。

from t1 in ContentTypes
from t2 in VwContentTRIGOF.Where(x => t1.ContentTypeID == x.ContentTypeID && new List<int> { 2588, 2227 }.Contains(x.ResearchAreaID)).DefaultIfEmpty()
where t1.IsActive == true
group new {t1, t2} by new { t1.ContentTypeID, t1.Label } into g
select new { g.Key.ContentTypeID, g.Key.Label, Disabled = g.Count(t => t.ContentTypeID == null) > 0 }

该错误在最后一行突出显示了最后一次使用 ContentTypeID,但我似乎无法安排查询以获得所需的结果。

有什么建议吗?

谢谢。

【问题讨论】:

    标签: linq join


    【解决方案1】:

    您组中的每个项目都有条目t1t2,而不是ContentTypeID,所以我怀疑您的最终select 应该是:

    select new { g.Key.ContentTypeID, g.Key.Label,
                 Disabled = g.Count(t => t.t2.ContentTypeID == null) > 0 }
    

    (假设您希望从 t2 获得它 - 如果您希望从 t1 获得它,然后适当地更改它......但鉴于 t1.ContentTypeID 是关键的一部分,这似乎不太可能......计数会只是组数。)

    【讨论】:

    • 对 StackOverflow 来说太快了。再过几分钟我无法接受你的回答。 :) 感谢您的帮助。
    猜你喜欢
    • 2015-02-28
    • 1970-01-01
    • 2011-02-07
    • 2019-01-15
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多