Select 仅此类项目包含 int 数组中的任何元素

Select only such items that contain any element in int array

假设我有一个 class:

public class Item
{
    ...
    public IEnumerable<int> ClientsIds { get; set; }
}

以及以下代码:

List<Item> items = GetItems();
int[] ids = GetIds();

现在我只需要 select 包含 ids int 数组中任何元素的项目。我该怎么做?

好吧,一个简单的 Where 应该可以做到:

var filteredItems = items.Where(item => 
                      item.ClientIds.Any(ids.Contains)).ToList();

我认为这里不需要扩展方法,但您当然可以封装它:

public static IEnumerable<Item> FilterItems(this IEnumerable<Item> source, IEnumerable<int> filter)
{
    return source.Where(item => item.ClientIds.Any(filter.Contains));
}