以下是我的代码。
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)中检索数据。如果找到数据,我想将记录合并到一个IQueryable对象(数据)中。有人可以帮忙吗?
答案 0 :(得分:0)
如果您无法使用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);
}
}
}
答案 1 :(得分:-1)
虽然有duplicates可以回答您的特定问题,但为什么不在一次点击中执行此操作而不是合并多个结果?
return this.Context.ACRViewCars.Where(x => statusIds.Contains(x.StatusId));
假设查询提供程序正在处理SQL,通常会将其转换为:
SELECT StatusId, x, y, z
FROM ACRViewCars
WHERE StatusId IN (1, 4, 6);