LINQ to SQL,子查询结果的聚合

时间:2011-01-04 22:46:31

标签: linq-to-sql

假设以下简单的表格设计:

表主(Id bigint PK,消息nvarchar(50))

Master中的示例行 101,“Foo”

表详情(Id bigint PK,MasterId bigint FK to Master PK,Code nvarchar(5))

详细信息中的示例行 1001,101,“A”
1002,101,“B”
1003,101,“C”

L2S查询的所需输出类似于以下内容 -

ID,代码,消息
101,“A,B,C”,“Foo”

以下L2S查询为我提供了我想要的内容,但是有更好的表达方式吗?

from m in Master
    where m.Id == 101
    select new
    {
       mi.Id,
       Codes = string.Join(",", (from c in Detail 
                                     where c.MasterId == m.Id
                                     select c.Code).ToArray()),
       mi.Message
    }

1 个答案:

答案 0 :(得分:1)

Purrrrfect。除了使用方法语法之外,我会这样做。对我来说似乎更“自然”。