2013-03-18 120 views
1

從Observable集合我想過濾名稱爲aaa,bbb,ccc,ddd,eee的項目。這個怎麼做?Linq查詢過濾Observable集合中的字符串列表

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; 
+0

強烈建議您使用'Hashset searchItems',特別是如果您有很多搜索條件。 – 2013-03-18 11:44:45

+0

@MeirionHughes:我會在最多15件物品。是否需要更改爲哈希集? – 2013-03-18 11:46:02

+0

可能不是,沒有。 – 2013-03-18 12:02:45

回答

5

您可以使用包含;

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

var filteredItems = from _items中的項目 其中_items.Any(x => x。searchItems.Contains(x.ItemName)) /* select x; */ select item; – 2015-05-26 13:02:06