使用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()));

我做错了什么。代码给出错误信息

使用lambda表达式比较两个列表

使用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();