Linq - 获得比当前更大的容量的结果

本文关键字:容量 结果 Linq | 更新日期: 2023-09-27 18:35:51

我有一个名为"资源"的表,其中有几个容量字段; CapM3CapUDCapMT

我想获取容量等于或大于默认提供的资源的资源列表

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 - 获得比当前更大的容量的结果

我想我将能够通过循环以获得所需的结果来做到这一点。但 是否可以在 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();
    }
}