【问题标题】:LINQ - array property contains element from another arrayLINQ - 数组属性包含来自另一个数组的元素
【发布时间】:2011-02-02 02:59:22
【问题描述】:

我有一个对象(产品),其属性类型为“数组”
例如product.tags = {"tag1","tag2","tag9"}

我有一组输入标签要过滤。

...但这并不完全有效:

List<string> filterTags = new List<string>() { "tag1", "tag3" };

var matches = from p in products
  where p.Tags.Contains(filterTags)
  select p;

有什么建议吗? 谢谢。

【问题讨论】:

    标签: .net linq arrays filter


    【解决方案1】:

    Contains 的真正目的是什么? Tags 中的所有项目都需要存在于filterTags 中吗?或者至少其中之一?后者使用Any,前者使用All。您的 where 行将更改为:

    where p.Tags.Any(tag => filterTags.Contains(tag))
    

    where p.Tags.All(tag => filterTags.Contains(tag))
    

    【讨论】:

    • 谢谢...太好了。它实际上意味着“任何”。 ....“...显示包含一个或多个输入标签的所有产品”。我会试一试的。谢谢!
    • 任何感兴趣的人都可以使用 LINQ:context.Products.Where(p =&gt; p.Tags.Any(tag =&gt; filterTags.Contains(tag)))
    • @Mike 作为 LINQ?答案不是LINQ吗?当然如此。您所展示的内容称为扩展方法语法 BTW。
    猜你喜欢
    • 2022-01-02
    • 2014-05-02
    • 1970-01-01
    • 2023-03-07
    • 2023-04-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多