基于值使用linq比较两个列表

基于值使用linq比较两个列表,linq,Linq,我正在使用silverlight 4。我有一个场景,需要根据值比较两个列表 List<Option> lstoption1 = new List<Option>(); Option opt = new Option(); opt.OptionText = "Text1"; lstoption1.add(opt) Option opt2 = new Option(); opt2.OptionText = "Text2"; lstoption

我正在使用silverlight 4。我有一个场景,需要根据值比较两个列表

  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)
为此,我使用了很多for循环,但我想使用linq以一种简单的方式来实现

在silverlight中使用LINQ有什么简单的方法可以找到它们吗


感谢您的帮助。

假设平等设置正确:

1 var Sameenties=两个列表中都存在哪些实体

2 var existinlst1=哪些实体仅存在于lstoptions1中

3 var notexistinlist1=哪些实体仅在lstoptions1中不存在

我想-你的描述不太清楚

如果需要,可以将自定义相等比较器传递到所有这些方法中,以便仅按选项文本进行比较。请注意,如果只需要结果中的选项文本,则可以首先投影它:

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

假设平等是适当建立的:

1 var Sameenties=两个列表中都存在哪些实体

2 var existinlst1=哪些实体仅存在于lstoptions1中

3 var notexistinlist1=哪些实体仅在lstoptions1中不存在

我想-你的描述不太清楚

如果需要,可以将自定义相等比较器传递到所有这些方法中,以便仅按选项文本进行比较。请注意,如果只需要结果中的选项文本,则可以首先投影它:

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

如何将相等比较器作为OptionText传递给它。@Chakradhar:你不明白哪一点-创建一个比较器,还是传递它?您只需将它作为第二个参数传递给这些方法中的每一个。如何将相等比较器作为OptionText传递给它。@Chakradhar:您不了解哪一点-创建比较器,还是传递它?您只需将它作为第二个参数传递给这些方法中的每一个。
var list1Only = list1.Except(list2);
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