2013-08-29 140 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