精确搜索与列表的值在LINQ

本文关键字:LINQ 列表 搜索 | 更新日期: 2023-09-27 18:10:21

我有一个项目的查询,我需要按键拉出确切的项目列表。例如- item [3], item[5]和item[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对象?

精确搜索与列表的值在LINQ

你的方法可以简化为

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

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