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

时间:2016-08-29 11:37:35

标签: c#

我想获得一个基于两个列表lstJobs和lstPraudits的字符串列表。我想获得两个列表中常见的PlanId。

这是我的代码 -

List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList()));

我在这里做错了什么。代码正在给出错误消息。

3 个答案:

答案 0 :(得分:3)

使用Enumerable.Intersect

List<string> result = reviewModel.lstJobs.Select(x=> x.PlanId)
   .Intersect(reviewModel.lstPraudits.Select(y=> y.PlanId))
   .ToList();
  

我在这里做错了什么

您的方法是错误的,因为x.planId.Contains将搜索子字符串,并且您将列表传递给该方法。这是错误的方法,因为你不想比较子串。

答案 1 :(得分:0)

使用Intersect是一个很好的方法..但如果你说你做错了我会说你正在迭代错误的东西。根据您的appproach查询应该是:

List<string> result = reviewModel.lstJobs.Select(x => reviewModel.lstPraudits.Select(y=>y.PlanId).Contains(x.planId))

答案 2 :(得分:0)

使用Where比较两个列表。

List<string> result =
         reviewModel.Where(x => x.planId.Contains(reviewModel.lstPraudits.Select(y=>y.PlanId)))
         .ToList();