Linq - 获得比当前更大的容量的结果
本文关键字:容量 结果 Linq | 更新日期: 2023-09-27 18:35:51
我有一个名为"资源"的表,其中有几个容量字段; CapM3
,CapUD
和CapMT
。
我想获取容量等于或大于默认提供的资源的资源列表。
public static IList<Resources> GetSwapResources(string resourceID)
{
//selected resource
var res = db.Resources.FirstOrDefault(p => p.ResourceID == resourceID);
//select all active resources excluding selected
var resources = db.Resources.Where(p => p.Active == true && p.ResourceID != resourceID);
//not sure how to filter here
return resources.ToList();
}
}
我想我将能够通过循环以获得所需的结果来做到这一点。但是,这是否可以在 LINQ 查询本身中处理?
我想我将能够通过循环以获得所需的结果来做到这一点。但 是否可以在 LINQ 查询本身中处理?
是的,您可以根据需要将任意数量的条件链接到 Where 子句:
var res = db.Resources
.Where(p => p.ResourceID == resourceID)
.Where(p => p.Active == true)
.Where(p => p.CapM3 >= 1234)
.Where(p => p.CapM3 >= 5678);
或者,如果您想使用 OR
而不是 AND
:
var res = db.Resources
.Where(p => p.ResourceID == resourceID)
.Where(p => p.Active == true)
.Where(p => p.CapM3 >= 1234 || p.CapM3 >= 5678);
我想出了如何达到预期的结果:
public static IList<Resources> GetSwapResources(string resourceID)
{
//selected resource
var res = db.Resources.FirstOrDefault(p => p.ResourceID == resourceID);
//select all active resources excluding selected
var resources = db.Resources.Where(p => p.Active == true && p.ResourceID != resourceID);
.Where(a => a.CapM3 <= res.CapM3 && a.CapMT <= res.CapMT && a.CapUD<= res.CapUD);
return resources.ToList();
}
}