2

次のリストには両方とも QuoteID フィールドが含まれています。quoteData リストに存在する QuoteID を持つ項目を currentQuotes リストから削除する最良の方法は何ですか? ありがとう。

  //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

ExceptID に基づいてセットの差分を取得するために使用できます。次に、結果 (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 に答える