2012-07-20 81 views
0

以下列表都包含一个QuoteID字段。从quoteQuotes列表中删除quoteData列表中存在QuoteID的项目的最佳方法是什么?谢谢。从列表中删除存在于另一个列表中的项目

//Establish - Instantiate lists 
    IList<QuotePaneView> currentQuotes = new List<QuotePaneView>(); 
    IList<Quote> quoteData = new List<Quote>(); 

    //Fill lists 
    currentQuotes = theQuotePaneService.GetAllQuotePanelStuff(); 
    quoteData = theQuoteDataService.GetAllQuoteData(); 
+0

你尝试过什么?在你的情况下,“最好”意味着什么? (最好是相对的) – banging 2012-07-20 18:51:14

回答

1

您可以使用Except根据ID获取设置差异。然后,您只需将结果(不在quoteData中的唯一ID)加入到currentQuotes列表中即可。

var notInQuoteData = currentQuotes.Select(q => q.QuoteID).Except(quoteData.Select(q => q.QuoteID)); 
var result = (from qUnique in notInQuoteData 
      join q in currentQuotes on qUnique equals q.QuoteID 
      select q).ToList(); 
2

一段简单的LINQ可以帮助在这里:

考虑以下几点:

 var list1 = new List<int>(); 

     list1.Add(1); 
     list1.Add(3); 
     list1.Add(5); 

     var list2 = new List<int>(); 

     list2.Add(1); 
     list2.Add(2); 
     list2.Add(3); 

     var diff = list1.Except(list2); 
相关问题