c# - 根据不同类型的另一个列表中的项目查找一个列表中的项目
问题描述
我有一个List<Class1>
and List<Class2>
,我想从List<Class1>
其中的项目 ID 存在的List<Class2>
所有项目中获取所有项目,相反,从List<Class1>
项目 ID不存在的项目中获取所有项目List<Class2>
。
public class Class1
{
public int Id { get; set; }
public string AnotherId { get; set; }
public decimal Price { get; set; }
}
public class Class2
{
public int Id { get; set; }
public int AnotherId { get; set; }
public string Message { get; set; }
}
我尝试了几种解决方案,Contains
但没有找到正确的方法。
解决方案
你可以尝试这样的事情:
var result = list1.Where(x => list2.Any(y=>y.Id == x.Id))
.ToList();
即使两个列表都包含对相同类型对象的引用,Contains
也不会开箱即用。如果是这种情况,您将要么IEquatable
为您的类实现接口,要么覆盖两者Equals
和GetHashCode
方法。只有这样Contains
才能按您的预期工作。
推荐阅读
- git - 更改提交的标签名称时“提交将被重新定位”是什么意思?
- dynamic - jmeter请求中的动态数据
- mysql - wget解析并插入mysql
- java - 为什么 JOptionPane 的文本在 Ubuntu 中看起来很奇怪?
- java - 您可以使用 ++ 运算符增加长文字并访问 java 中的整个长文字范围吗?
- javascript - 如何获取点击查询的值?
- r - 将拆分数据转换为r中的数据框
- authentication - 如何在 CakePHP 的身份验证插件中更改查找器模型
- reactjs - 使用 IdentityServer4 连接到 AzureAD 而不是直接连接到 AzureAD 有什么好处?
- arrays - 有没有一种有效的方法来比较这些数组?