如何在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)中。有人能帮忙吗?
如果不能使用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);