如何在c#中将一个IQueryable列表合并到另一个现有的IQueryaable源中

本文关键字:另一个 合并 列表 源中 IQueryaable IQueryable 一个 | 更新日期: 2023-09-27 18:00:37

下面是我的代码。

public IQueryable GetCarsByStatusId(List<int> statusIds = null)
{
  IQueryable data = null;
  if(statusIds == null)
  {
    data = this.Context.ACRViewCars.OrderBy(x=>x.Status);
  }
  else if(statusIds != null && statusIds.Count > 0)
  {
    foreach(int id in statusIds)
    {
      var query = this.Context.ACRViewCars.Where(x => x.StatusId == id);
      if(query != null)
      {
        //What to do here; I have no idea
      }
    }
  }
  return data;
}

场景是:我有一个列表,使用它,我想从IQueryable源(this.Context.ACRViewCars)中检索数据。如果找到数据,我想将记录合并到一个IQueryaable对象(data)中。有人能帮忙吗?

如何在c#中将一个IQueryable列表合并到另一个现有的IQueryaable源中

如果不能使用IQueryable<T>,可以使用

public IEnumerable<IQueryable> GetCarsByStatusId(List<int> statusIds = null)
{
    if (statusIds == null)
    {
        yield return this.Context.ACRViewCars.OrderBy(x => x.Status);
    }
    else if (statusIds != null && statusIds.Count > 0)
    {
        foreach (int id in statusIds)
        {
            yield return this.Context.ACRViewCars.Where(x => x.StatusId == id);
        }
    }
}

虽然有重复项可以回答您的特定问题,但为什么不一次性完成,而不是合并多个结果呢?

return this.Context.ACRViewCars.Where(x => statusIds.Contains(x.StatusId));

假设查询提供程序正在处理SQL,这通常被转换为以下内容:

SELECT StatusId, x, y, z
FROM ACRViewCars
WHERE StatusId IN (1, 4, 6);