【问题标题】:Nested selects in LINQ expression, how to?LINQ表达式中的嵌套选择,如何?
【发布时间】:2012-01-11 19:50:39
【问题描述】:

我不知道如何在 LINQ 中使用嵌套选择。 如何将此 SQl 表达式转换为 LINQ?

Select i.ID, i.Impression, 
(Select COUNT(ImpressionsId) 
    from DiaryImpressions 
    where DiaryPostsId = '2' AND ImpressionsId = i.ID) as Num from Impressions i

【问题讨论】:

  • 诸如此类的事情让我寻找更好的解决方案。加入 linq 只会让你哭泣......你可以考虑看看这个简单但很棒的工具(dapper)code.google.com/p/dapper-dot-net
  • 我相信这也可以重写为 JOIN,具有等效的 RA 模型。不过,计划可能会有所不同。

标签: sql linq sql-to-linq-conversion


【解决方案1】:
from ...
select new { 
    i.Id, 
    i.Impression, 
    Count = context.DiaryImpressions.Count(d => d.DiaryPostsId == 2 && d.ImpressionsId == i.Id)
 }

如果你正确地映射你的对象,你可以直接使用子关系:

Count = i.DiaryImpressions.Count(d => d.DiaryPostsId == 2)

【讨论】:

  • 感谢您的回答 Slaks
【解决方案2】:

真的吗? DiaryPostsId 是一个字符串?哦,好吧……

from i in context.Impressions
select new {
    i.ID,
    i.Impressions,
    Num = (from d in context.DiaryImpressions
           where d.DiaryPostsId == "2"
           && d.ImpressionsId == i.ID
           select d).Count()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多