C# 使用lambda表达式比较两个列表
我想得到一个基于两个列表lstJobs和lstpraudit的字符串列表。我想得到两个列表中常见的PlanId 这是我的密码-C# 使用lambda表达式比较两个列表,c#,C#,我想得到一个基于两个列表lstJobs和lstpraudit的字符串列表。我想得到两个列表中常见的PlanId 这是我的密码- List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList())); List result=reviewModel.lstJobs.Select(x=>x.planId
List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList()));
List result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.planId.toList());
我在这里做错了什么。代码发出错误消息。使用
可枚举。相交
:
List<string> result = reviewModel.lstJobs.Select(x=> x.PlanId)
.Intersect(reviewModel.lstPraudits.Select(y=> y.PlanId))
.ToList();
List result=reviewModel.lstJobs.Select(x=>x.PlanId)
.Intersect(查看model.lstPraudits.Select(y=>y.PlanId))
.ToList();
我做错了什么
您的方法是错误的,因为
x.planId.Contains
将搜索子字符串,并且您正在将列表传递给该方法。无论如何,这是一种错误的方法,因为您不想比较子字符串。使用Intersect是一种很好的方法。。但是如果你说你做错了什么,我会说你在重复错误的事情。根据appproach的查询应为:
List<string> result = reviewModel.lstJobs.Select(x => reviewModel.lstPraudits.Select(y=>y.PlanId).Contains(x.planId))
List 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();
列出结果=
reviewModel.Where(x=>x.planId.Contains(reviewModel.lstPraudits.Select(y=>y.planId)))
.ToList();
错误消息的来源可能是拼写错误的标识符,如Slect
和toList
,除非您自己定义了这些方法。您拼写错误了select,planId的类型是什么?是收藏吗?此外,我在内部查询中看到Select的拼写错误。请确保并标记您认为有助于解决问题的答案。“代码给出错误消息”下次也提供此错误消息;)