2

我有一个这样的MyItem对象列表myItems

public class MyItem{
    public int[] category_ids;
    public string name;
}

List<MyItem> myItems;

我想使用选定类别列表过滤对象列表,以便过滤后的列表包含任何过滤器类别 ID:

int[] filter = { 1, 5, 6, 9 };

我将如何在一行中使用 LINQ 来做到这一点?(如果它甚至可能的话,我不能绕着它转!)我想像这样的事情:

IEnumerable<MyItem> filtered = myItems.Where(item => item.category_ids.Contains(xxx));
4

3 回答 3

2

需要一个方法调用:

IEnumerable<MyItem> filtered = myItems.Where(item => item.category_ids.Any(x=>filter.Contains(x));
于 2012-10-04T12:10:26.877 回答
2

已经提出的另一种选择:

var filtered = myItems.Where( item => item.category_ids.Intersect( filter ).Count() > 0 );
于 2012-10-04T12:10:40.370 回答
2
var filtered = myItems.Where(x => x.category_ids.Intersect(filter)
                                          .Any());
于 2012-10-04T12:12:02.090 回答