2015-05-13 22 views
0

我正在使用下面的邏輯來將List列合併在一起,如果它們具有除了一個(OtherAuditeesUserName)以外的所有列相同的列。在這種情況下,我加入OtherAuditeesUserName的不同值之間用逗號seperater在列表中合併行。如果一列具有不同的值

原始列表如下:

TrailRemarkId,PreviousAudit,OtherAuditees,StrategicPriority,觀測,DocumentsReviewed

1, 「老審計」 「簡·史密斯」,1,無,doc.docx

1, 「老審計」, 「約翰·柯林斯」,1,無,doc.docx

最終的結果我找的是:

TrailRemarkId,PreviousAudit,OtherAuditees,StrategicPriority,觀測,DocumentsReviewed

1, 「老審計」, 「簡smaith,約翰·柯林斯」,1,無,doc.docx

看到OtherAuditees如何利用加盟一個逗號。

有人能指出一種更有效的方式來合併List行嗎?

var trailRemarks = (from a in auditData 
           select new 
           { 
            a.TrailRemarkId, 
            a.PreviousAudit, 
            a.OtherAuditees, 
            a.StrategicPriority, 
            a.Observations, 
            a.DocumentsReviewed, 
           }).Distinct(); 

List<TrailRemarkEntity> trlist = new List<TrailRemarkEntity>() ; 
      int? trId = 0; 
      foreach (var tr in trailRemarks) 
      { 
       if (trId == 0 || (trId != tr.TrailRemarkId)) 
       { 
        trlist.Add(
         new TrailRemarkEntity() 
         { 
          TrailRemarkId = tr.TrailRemarkId ?? 0, 
          PreviousAuditName = tr.PreviousAudit, 
          DocumentsReviewed = tr.DocumentsReviewed, 
          StrategicPriorityName = tr.StrategicPriority, 
          OtherAuditeesUserName = tr.OtherAuditees, 
          Observations = tr.Observations 
         } 
         ); 
       } 
       else 
       { 
        var existingTR = trlist.Last(); 
        existingTR.OtherAuditeesUserName += ", " + tr.OtherAuditees; 
       } 

       trId = tr.TrailRemarkId; 

      } 
+0

你的問題不太清楚。您似乎想通過「TrailRemarkId」進行分組(爲其獲取一個「結果行」),併爲「OtherAuditees」包含逗號分隔的列表。但是,您的數據也可能包含「TrailRemarkEntity」中所有其他字段的不同值,例如,每個'OtherAuditee'的不同觀察值。在這種情況下你的預期結果是什麼? – Alex

回答

1

您可以通過和的string.join做它像下面使用組,

List<TrailRemarkEntity> trailRemarks = (from a in auditData 
          group a by new { 
           a.TrailRemarkId, 
           a.TrailRemarkId, 
           a.PreviousAudit, 
           a.StrategicPriority, 
           a.Observations, 
           a.DocumentsReviewed 
          } into groupedData 

          select new TrailRemarkEntity() 
          { 
           TrailRemarkId = groupedData.Key.TrailRemarkId ?? 0, 
           PreviousAuditName = groupedData.Key.PreviousAudit, 
           DocumentsReviewed = groupedData.Key.DocumentsReviewed, 
           StrategicPriorityName = groupedData.Key.StrategicPriority, 
           OtherAuditeesUserName = string.join("," , groupedData.Select(exp=>exp.OtherAuditees)), 
           Observations = groupedData.Key.Observations 
          }).ToList(); 

希望它能幫助。

0

感謝thisiva,您的解決方案工作,但我修改它稍微如下刪除重複:

的string.join( 「」,groupedData.Select(EXP => exp.OtherAuditees).Distinct())

相關問題