【问题标题】:Linq query to filter a list of strings in Observable collection用于过滤 Observable 集合中的字符串列表的 Linq 查询
【发布时间】:2013-03-18 11:22:20
【问题描述】:

我想从 Observable 集合中过滤名称为 aaa、bbb、ccc、ddd、eee 的项目。如何做到这一点?

public class Item
{
public string ItemName {get; set;}
public int ItemNumber {get; set;}
}

public ObservableCollection<Item> _items;

public List<string> searchItems = new List<string>(5);
searchItems.Add("aaa");
searchItems.Add("bbb");
searchItems.Add("ccc");
searchItems.Add("ddd");
searchItems.Add("eee");

我在 linq 中尝试了一点。但我不知道如何处理列表。

var filteredItems = from item in _items
                    where _items.Any(x => x.ItemName == "aaa")
                    select x;

【问题讨论】:

  • 强烈建议您同时使用Hashset&lt;string&gt; searchItems,尤其是在您有很多搜索字词的情况下。
  • @MeirionHughes:我最多有 15 件物品。是否需要改成hashset?

标签: .net list observablecollection


【解决方案1】:

您可以使用包含;

var filteredItems = from item in _items
                    where _items.Any(x => searchItems.Contains(x.ItemName))
                    /*select x;*/
                    select item;

【讨论】:

  • var filteredItems = from item in _items where _items.Any(x =>x.searchItems.Contains(x.ItemName)) /*select x;*/ select item;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2011-06-09
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 2021-12-11
相关资源
最近更新 更多