2016-12-30 161 views
-5

基於條件

var incidents = new List<SMIncident>(); 
 
while (reader.Read()) 
 
{ 
 
    SMIncident smIncident = new SMIncident(); 
 
    smIncident.GCSSReferenceNo = reader.GetString(0); 
 
    smIncident.assignmentGroup = reader.GetString(1); 
 
    incidents.Add(smIncident); 
 
}

List

從對象列表如何刪除重複我需要根據一定的條件從列表中刪除重複項。 例如,

xxxx t1 
 
yyyy t2 
 
zzzz t1 
 
xxxx t4 
 
xxxx t2

1)需要檢查,如果列表包含重複, 2)如果重複在那裏,然後檢查,如果重複的值爲t4中,3)如果t4在那裏,然後忽略所有。 所以基本上,我需要的是與yyyy - > t2,zzzz - > t1這些值的列表。

第二個場景:

xxxx t1 
 
yyyy t2 
 
zzzz t1 
 
xxxx t2

1)需要檢查,如果列表包含重複, 2)如果重複在那裏,然後檢查,如果重複的值是T4 ,3)如果沒有t4,那麼它應該有列表中的所有值 所以基本上,我需要的是一個列表xxxx - > t1,yyyy - > t2,zzzz - > t1,xxxx - > t2這些值。

+0

那你試試?你的名單是什麼形式?展示一些代碼,展示你的嘗試,向我們展示我們必須使用的 – BugFinder

+0

粘貼代碼片段的圖像。事件是列表對象。必須操縱列表。 –

+0

你顯然沒有讀過網站的規則 - 發佈代碼的圖像不是一個好主意,好像任何人認爲這可能適用於他們..該圖像可能會去..我也不會徘徊到其他網站看看代碼的blury圖像 – BugFinder

回答

2

嘗試這個例子中根據你的抽象:

class AbstractList { public string field1; public string field2; } 

List<AbstractList> lst = new List<AbstractList> { 
        new AbstractList() { field1 = "xxxx", field2="t8"}, 
        new AbstractList() { field1 = "xxxx", field2="t1"}, 
        new AbstractList() { field1 = "xxxx", field2="t5"}, 
        new AbstractList() { field1 = "yyyy", field2="t1"}, 
        new AbstractList() { field1 = "yyyy", field2="t3"}, 
        new AbstractList() { field1 = "zzzz", field2="t1"}, 
        new AbstractList() { field1 = "zzzz", field2="t4"}, 
        new AbstractList() { field1 = "xxxx", field2="t5"} 
        }; 



var res = from lstElement in lst 
      where 
      (
       //following linq sub-expression get an exclusion sequence for your purpose 
       from el_lstGrouped in 
       (
       from i in lst 
       group i by new { i.field1 } into lstGrouped 
       where lstGrouped.Count() > 1 
       select lstGrouped 
      ).SelectMany(g => g) 
       where el_lstGrouped.field2 == "t4" 
       select new 
       { 
       Field1 = el_lstGrouped.field1, 
       Field2 = el_lstGrouped.field2 
       } 
      ).All(excluded => excluded.Field1 != lstElement.field1) 
       select lstElement; 

foreach(var item in res)   
    Console.WriteLine($"{item.field1} - {item.field2}"); 

試片斷:http://volatileread.com/utilitylibrary/snippetcompiler?id=99262

+1

很好用。非常感謝你。 –

+0

我很高興,謝謝..你是歡迎 –