2

MyItem私はこのように呼ばれるオブジェクトのリストを持っていますmyItems

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

List<MyItem> myItems;

選択したカテゴリのリストを使用してオブジェクトのリストをフィルタリングし、フィルタリングされたリストにフィルタカテゴリIDのいずれかが含まれるようにします。

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

LINQを1行で使用してそれを行うにはどうすればよいですか?(可能であれば、頭を包むことはできません!)次のようなことを想像します。

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

3 に答える 3

2

もう1つのメソッド呼び出しが必要です:

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 に答える