我想获得一个基于两个列表lstJobs和lstPraudits的字符串列表。我想获得两个列表中常见的PlanId。
这是我的代码 -
List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList()));
我在这里做错了什么。代码正在给出错误消息。
答案 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();