【问题标题】:Exact search with list of values in LINQ使用 LINQ 中的值列表进行精确搜索
【发布时间】:2015-08-30 09:20:13
【问题描述】:

我有一个项目查询,我需要通过它们的键提取一个确切的项目列表。例如 - 项目 [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&lt;Item&gt; 而不是 List。是否可以使用 LINQ 获取这些项目并获取 IQueryable 对象?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    你的方法可以简化为

    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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2011-02-27
      • 1970-01-01
      相关资源
      最近更新 更多