2

以下两个列表都包含一个 QuoteID 字段。从 currentQuotes 列表中删除具有 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();
4

2 回答 2

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);
于 2012-07-20T18:53:24.083 回答
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();
于 2012-07-20T18:52:45.090 回答