使用lambda表达式比较两个列表
本文关键字:两个 列表 lambda 表达式 比较 使用 | 更新日期: 2023-09-27 18:04:27
我想获得一个基于两个列表lstJobs和lstpraudit的字符串列表。我想要得到PlanId,这是常见的两个列表。
这是我的代码-
List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList()));
我做错了什么。代码给出错误信息
使用Enumerable.Intersect
:
List<string> result = reviewModel.lstJobs.Select(x=> x.PlanId)
.Intersect(reviewModel.lstPraudits.Select(y=> y.PlanId))
.ToList();
我做错了什么
您的方法是错误的,因为x.planId.Contains
将搜索子字符串,而您将列表传递给该方法。这是错误的方法,因为你不想比较子字符串
使用Intersect是一个很好的方法。但如果你说你做错了什么,我会说你在错误的事情上迭代。按照您的方法,查询应该是:
List<string> result = reviewModel.lstJobs.Select(x => reviewModel.lstPraudits.Select(y=>y.PlanId).Contains(x.planId))
使用Where
比较两个列表
List<string> result =
reviewModel.Where(x => x.planId.Contains(reviewModel.lstPraudits.Select(y=>y.PlanId)))
.ToList();