2013-08-29 143 views
0

我有以下LINQ如何在同一列表中的记录合并C#列表记录

var unionOperations = 
     (from r in gropOperations 
     select new 
      { 
      r.OPERATIONID, 
      r.OPERATIONNAME, 
      r.ISACTIVE 
      }) 
     .Union(from m in customOperations 
       select new 
       { 
        m.OPERATIONID, 
        m.OPERATIONNAME, 
        m.ISACTIVE 
       } 
      ); 

它如下返回对象的名单,

{ OPERATIONID = 1050, OPERATIONNAME = "NEW", ISACTIVE = TRUE } 
{ OPERATIONID = 1050, OPERATIONNAME = "NEW", ISACTIVE = FALSE } 
{ OPERATIONID = 1051, OPERATIONNAME = "EDIT", ISACTIVE = TRUE } 
{ OPERATIONID = 1052, OPERATIONNAME = "DELETE", ISACTIVE = TRUE } 
{ OPERATIONID = 1053, OPERATIONNAME = "PRINT", ISACTIVE = TRUE } 

现在我想要的清单如下:

{ OPERATIONID = 1050, OPERATIONNAME = "NEW", TRUE } 
{ OPERATIONID = 1051, OPERATIONNAME = "EDIT", TRUE } 
{ OPERATIONID = 1052, OPERATIONNAME = "DELETE", TRUE } 
{ OPERATIONID = 1053, OPERATIONNAME = "PRINT", TRUE } 

什么是真正的情况是它与自己的“或”操作合并前两个记录(OPERATIONID = 1050)值为ISACTIVE;

+3

你为什么要对我们大喊大叫? –

+0

关闭你的大头锁btw .. –

+0

如果你觉得我在大喊大叫。这是我的第一篇文章,我不擅长英文。 – Nan

回答

3
var result = unionOperations.GroupBy(x => x.OPERATIONID) 
       .Select(g => { 
        var item = g.First(); 
        return new { 
         OPERATIONID = item.OPERATIONID, 
         OPERATIONNAME =item.OPERATIONNAME, 
         ISACTIVE = g.Aggregate(false, (r, x) => r |= x.ISACTIVE) 
        }; 
       }) 
       .ToList(); 
+0

非常感谢。那是我寻找的。 – Nan

+0

@南苏的方式来感谢你http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – I4V