C# 创建列表的优雅方式<&燃气轮机;

C# 创建列表的优雅方式<&燃气轮机;,c#,.net,linq,C#,.net,Linq,我正在使用此LINQ to实体: var t1 = (from cn in contracts join cl in client on cn.Id equals cl.Id join so in siteObject on cn.Id equals so.ContractId select new { siteObjId = so.Id, clientId =

我正在使用此LINQ to实体:

var t1 = (from cn in contracts
          join cl in client on cn.Id equals cl.Id
          join so in siteObject on cn.Id equals so.ContractId
          select new
          {
              siteObjId = so.Id,
              clientId = cl.Id,
          }).ToList();
我有以下清单:

是否有任何优雅的方法使用(例如LINQ)从上面的列表(t1)创建新列表,如下所示:


您需要
分组依据
操作员:

(from x in t1
 group x b x.ClientId into g
 select new
 {
     ClientId = g.Key,
     ModelIds = g.ToList()
 }).ToList()

您可以通过语句对项目进行分组。对于每个结果项,您可以使用concat结果组来获得类似
1,2,3
的结果。但是,首先,假设您正在使用Linq转换实体,首先,尝试执行一个简单的查询分组值。对于示例:

var groupResult =  (from cn in contracts
                   join cl in client on cn.Id equals cl.Id
                   join so in siteObject on cn.Id equals so.ContractId
                   group cl by cl.Id into g
                   select new {
                        ClientId = g.Key,
                        Result = g
                   }).ToList();
var t1=  (from item in groupResult 
          select new {
               clientId = item.ClientId,
               siteObjId = string.Join(",", item.ToList()),
          });
并使用具有
groupResult
列表的Linq To对象,将值连接到字符串中,例如:

var groupResult =  (from cn in contracts
                   join cl in client on cn.Id equals cl.Id
                   join so in siteObject on cn.Id equals so.ContractId
                   group cl by cl.Id into g
                   select new {
                        ClientId = g.Key,
                        Result = g
                   }).ToList();
var t1=  (from item in groupResult 
          select new {
               clientId = item.ClientId,
               siteObjId = string.Join(",", item.ToList()),
          });

我想你是在找一个
分组人
。很抱歉,这是关于你想要分组的列的,例如:
clientId
。这是一种非常优雅的方式,但上面的答案有很多错误。你能检查一下吗?我得到一个例外:LINQ to Entities无法识别方法'System.String Join[Int32](System.String、System.Collections.Generic.IEnumerable`1[System.Int32])'方法,而此方法无法转换为存储表达式。您正在使用
Linq To Entities
,换句话说,Linq不知道如何转换
字符串。请在
sql
语句中加入
方法。我将更改anwser。谢谢,但现在出现了此错误:错误10'AnonymousType#1'不包含定义n表示“ToArray”,并且找不到接受“AnonymousType#1”类型的第一个参数的扩展方法“ToArray”(是否缺少using指令或程序集引用?)