1

Silverlight 4 を使用しています。値に基づいて 2 つのリストを比較する必要があるシナリオがあります。

  List<Option> lstoption1 = new List<Option>();
  Option opt = new Option();
  opt.OptionText = "Text1"; 
  lstoption1.add(opt)

  Option opt2 = new Option();
  opt2.OptionText = "Text2"; 
  lstoption1.add(opt2)


  Option opt3 = new Option();
  opt3.OptionText = "Text3"; 
  lstoption1.add(opt3)



  List<Option> lstoption2 = new List<Option>();
  Option opt = new Option();
  opt.OptionText = "Text1"; 
  lstoption2.add(opt)

  Option opt2 = new Option();
  opt2.OptionText = "Text4"; 
  lstoption2.add(opt2) 

  Option opt3 = new Option();
  opt3.OptionText = "Text3";
  opt3.OptionChecked = false; 

  lstoptions2.add(opt3)

OptionTextに基づいてこれら 2 つのリストを比較する必要があります

  1) var sameentities= which entities exisits in both lists.

    ie : it should return entities that has OptionText as 
           **Text1 & Text3**

  2) var existinlst1= which entities  exists only in lstoptions1.

     ie : it should return entity that has OptionText as
           **Text2** 

  3) var notexistinlist1=which entities not exists only in lstoptions1.

      ie : it should return entity that has OptionText as
           **Text4**

これには非常に多くの for ループを使用していますが、linq を使用して簡単な方法で実行したいと考えています。

Silverlight でLINQを使用してそれらを見つける簡単な方法はありますか。

助けてくれてありがとう。

4

1 に答える 1

4

同等性が適切に設定されていると仮定します。

1) var sameentities= 両方のリストに存在するエンティティ。

var same = list1.Intersect(list2);

2) var existinlst1= どのエンティティが lstoptions1 にのみ存在するか。

var list1Only = list1.Except(list2);

3) var notexistinlist1=lstoptions1 にのみ存在しないエンティティ。

var list2Only = list2.Except(list1);

(私は思う - あなたの説明はあまり明確ではありません。)

必要に応じて、これらすべてのメソッドにカスタム等値比較子を渡して、オプション テキストだけで比較することができます。結果からオプション テキストのみが必要な場合は、最初にそれを射影することができます。

var text1 = list1.Select(x => x.OptionText);
var text2 = list2.Select(x => x.OptionText);
// Now use the same methods as before, but with text1 and text2
于 2012-06-29T06:27:26.440 に答える