如何使用 linq 检测一个集合字段是不是存在于另一个列表中?
Posted
技术标签:
【中文标题】如何使用 linq 检测一个集合字段是不是存在于另一个列表中?【英文标题】:How to detect that one field of collection exist into another list with linq?如何使用 linq 检测一个集合字段是否存在于另一个列表中? 【发布时间】:2016-05-18 11:02:04 【问题描述】:我尝试检测AirCoNam1
字段是否存在于airlines
列表中。我写了这个 linq 查询但得到了错误。
aFlightList
是一个包含AirCoNam1
字段的集合。
如何解决这个问题?
aFlightList=aFlightList.Any( airlines.Contains(x=>x.AirCoNam1)).ToArray();
【问题讨论】:
你需要的是Where
而不是Any
....***.com/questions/3703256/…
你得到的错误究竟是什么?
【参考方案1】:
你可以使用Intersect
Linq方法
var doesContain = aFlightList.Intersect(airlines.Select(a => a.AirCoNam1)).Any();
【讨论】:
@programmer138200 以什么方式? @programmer138200 帮助任何不让人帮助他的人是不可能的,“它不起作用”没有帮助,什么不起作用,你得到什么错误,什么输出你得到了什么,你期望什么输出。只是说它不起作用是没有任何帮助的【参考方案2】:正确的做法是这样的:
aFlightList=aFlightList.Where(x=>airlines.Contains(x.AirCoNam1)).ToArray();
【讨论】:
【参考方案3】:Any()
返回布尔值。您不能在布尔值上调用 ToList()
。从问题中并不清楚,但看起来你想在 where 子句中使用 Any()
,如下所示:
aFlightList = aFlightList.Where(f => airlines.Any(a => a == f.AirCoNam1))
.ToArray();
【讨论】:
以上是关于如何使用 linq 检测一个集合字段是不是存在于另一个列表中?的主要内容,如果未能解决你的问题,请参考以下文章