创建List<>的优雅方式

时间:2015-10-07 11:54:34

标签: c# .net linq

我正在使用这个LINQ to Entity:

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

t1有这个清单:

enter image description here

是否有任何优雅的方式使用(例如LINQ)从上面的列表(t1)创建, 这样的新名单:

enter image description here

提前谢谢。

2 个答案:

答案 0 :(得分:4)

你可以group by声明这些项目。对于每个结果项,您可以使用string.Join(separator, collection)连结结果组,以获得1,2,3之类的结果。但是,首先,假设您正在使用Linq To Entities,首先尝试执行简单的查询分组值。样本:

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

使用具有groupResult列表的Linq To Objects,将值连接到字符串中,用于示例:

var t1=  (from item in groupResult 
          select new {
               clientId = item.ClientId,
               siteObjId = string.Join(",", item.ToList()),
          });

答案 1 :(得分:2)

您需要env REDISCLI_HISTFILE=/dev/null redis-cli 运算符:

group by