c# - 使用 Linq 比较列表并获取值

标签 c# .net linq

我的对象是“MyClass”,有两个属性:Id (int) 和 HourBy (int)

我有两个列表:

var List1 = new List<MyClass>();
var List2 = new List<MyClass>();

我想要一份 list : - List1 中的对象根据 Id 与 Hourby (list2) < Hourby in List1 存在于 List2 中 - List1 中的对象不存在于 List2 中

//#Sample1
//List1 :
List1.add(new MyClass(1,10));
List1.add(new MyClass(2,20));
List1.add(new MyClass(3,30));
//List2 :
List2.add(new MyClass(1,10)); 
List2.add(new MyClass(2,15));
//I'd like to get :
new MyClass(2,5);
new MyClass(3,30);

//Sample2
List1 :
List1.add(new MyClass(1,10));
List1.add(new MyClass(2,20));
List1.add(new MyClass(3,30));
//List2 :
List2.add(new MyClass(1,10)); 
List2.add(new MyClass(2,15));
List2.add(new MyClass(2,2));
//I'd like to get :
new MyClass(2,3);
new MyClass(3,30);

谢谢,

最佳答案

您可以通过以下 Linq 语句执行此操作:

var result = List1.Where(x => !List2.Select(y => y.Id).Contains(x.Id)
    || List2.Single(y => x.Id == y.Id).HourBy < x.HourBy);

最好的问候

关于c# - 使用 Linq 比较列表并获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1193345/

相关文章:

c# - 使用定义的分隔符将字符串数组转换为字符串

.net - 我可以让 WPF ListBox 从父元素继承画笔吗?

c# - 无法将使用 'not in (subquery)' 的查询语法 LINQ 查询转换为方法语法

c# - 是否可以在 PCL 中使用 .AsParallel 扩展方法?

c# - 为什么不能为 C# 中自动实现的属性指定不同的访问修饰符

c# - 使用 .NET Framework 3.5 在 C# 中调用 Web API

.net - Visual Studio 2010 - WPF/Silverlight 和内置网格

C# linq 求和

c# - 循环遍历 checkedListBox 项目而不选择所有项目

c# - LINQ to SQL 中的连接池