如何使用 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】:

你可以使用IntersectLinq方法

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 检测一个集合字段是不是存在于另一个列表中?的主要内容,如果未能解决你的问题,请参考以下文章

Hive:如何检查一个数组的值是不是存在于另一个数组中?

如果值存在于另一个字段数组中,Laravel 验证规则

选择一个数组字段中的所有值都存在于另一个数组中的文档

如何编写一个 MySQL 查询,该查询返回一个临时列,其中包含与该行相关的项目是不是存在于另一个表中的标志

LINQ学习——JOIN

使用 lodash 检查数组是不是存在于另一个数组中