精确搜索与列表的值在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
对象?
你的方法可以简化为
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();
}