使用LINQ中的值列表进行精确搜索

时间:2015-08-30 09:20:14

标签: c# linq

我有一个项目查询,我需要通过他们的键来提取确切项目的列表。例如 - 项目[3],项目[5]和项目[10]。 我有这个功能:

    public List<Item> GetItems<Item>(List<int> keys) 
    {
        IQueryable<Item> itemsQuery = GetItemsQuery();
        List<Item> items = new List<Item>();
        foreach (int key in keys)
        {
            Item item = itemsQuery.SingleOrDefault(x => x.Key == key);
            if (item != null)
            {
                items.Add(item);
            }
        }
        return items;
    }

现在,我希望此函数将返回IQueryable<Item>而不是List。是否可以使用LINQ获取这些项并获得IQueryable对象?

1 个答案:

答案 0 :(得分:3)

您的方法可以简化为

removeChild

public IQueryable<Item> GetItems<Item>(List<int> keys)
{
    IQueryable<Item> itemsQuery = GetItemsQuery();
    return itemsQuery.Where(x => keys.Any(y => x.Key == y)).AsQueryable();
}