2016-12-30 125 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

我很高兴,谢谢..你是欢迎 –