在列表和联盟(或Concat)中筛选重复项

时间:2012-06-21 01:52:33

标签: c# linq

   var testfilter = ( from p in test1  where !(from Q in test2 select new {Q.Website,Q.SSN,Q.Class})
                       Contains(new {p.Website,P.SSN,P.Class}) Select P).ToList();

    List<testResults> ResultList = (from R in testfilter  
                                    select new testResults  
                                    {  
                                       Website = R.Website,
                                        SSN = R.SSN,
                                        class = R.class, List1 = 'Yes'  
                                    }.ToList()  
                                   .Union (from Q in test2 
                                    select new testResults    
                                    {   
                                      Website = Q.Website,
                                      SSN = Q.SSN,class = Q.class, Status = Q.Status,
                                      List2 = 'Yes'   
                                   }.ToList(); 

我必须检查以下列表中的以下条件

1)很少有记录仅存在于 test1 列表

2)很少有记录仅存在于 test2 列表

3)两个列表中都存在少量记录,如果两个列表中都存在过滤它们并显示为一条记录。

上述查询适用于小于50k的记录,但我在网格中显示的记录超过200 k。如何使用Except或其他方法改进查询?

1 个答案:

答案 0 :(得分:0)

你可以尝试使用不同的东西,不确定这是解决问题的最佳方法,只是一个建议

 List<testResults> distinctResultList = ResultList.Distinct().ToList();