使用求和进行多重比较的c#lambda表达式

使用求和进行多重比较的c#lambda表达式,c#,linq,lambda,C#,Linq,Lambda,我尝试在lambda表达式中使用Sum方法进行比较,但我想将其用于多次比较。我如何做到这一点?我看了“Let”和“SelectMany”,但还没有找到答案 下面是代码的外观: return _dbContext.All<Table>() .Where(table => table.CurrentLevel <= salesCriteria.MaxTableLevel) .Where(table => table.Le

我尝试在lambda表达式中使用Sum方法进行比较,但我想将其用于多次比较。我如何做到这一点?我看了“Let”和“SelectMany”,但还没有找到答案

下面是代码的外观:

return _dbContext.All<Table>()
            .Where(table => table.CurrentLevel <= salesCriteria.MaxTableLevel)
            .Where(table =>  table.Leg
                            .Where(leg=> salesCriteria.StartDate <= leg.AddDate)
                            .Where(leg=> leg.AddDate <= salesCriteria.EndDate)
                            .Sum(leg => leg.Width) <= salesCriteria.MaxGoalAmount);
return\u dbContext.All()
.Where(table=>table.CurrentLevel table.Leg

.Where(leg=>salesCriteria.StartDate leg.AddDate leg.Width)听起来您想要的是:

return _dbContext.All<Table>()
        .Where(table => table.CurrentLevel <= salesCriteria.MaxTableLevel)
        .Select(table => new { 
           table, 
           legWidth = table.Leg
                           .Where(leg=> salesCriteria.StartDate <= leg.AddDate)
                           .Where(leg=> leg.AddDate <= salesCriteria.EndDate)
                           .Sum(leg => leg.Width)
        })
        .Where(x => x.legWidth <= salesCriteria.MaxGoalAmount &&
                    x.legWidth >= salesCriteria.MinGoalAmount)
        .Select(x => x.table);

要获得
let
的强大功能,您需要从方法链接语法切换到查询表达式语法。请尝试以下操作:

var goodTables = 
    from table in _dbContext.All<Table>()
    where table.CurrentLevel <= salesCriteria.MaxTableLevel
    let sumOfWidthOfGoodLegs = 
        table.Leg
        .Where(leg=> salesCriteria.StartDate <= leg.AddDate)
        .Where(leg=> leg.AddDate <= salesCriteria.EndDate)
        .Sum(leg => leg.Width)    
    where sumOfWidthOfGoodLegs <= salesCriteria.MaxGoalAmount
    // can insert another where on sumOfWidthOfGoodLegs here as required
    select table;

return goodTables.ToList();
var goodTables=
来自_dbContext.All()中的表
其中table.CurrentLevel salesCriteria.StartDate leg.AddDate leg.Width)

sumOfWidthOfGoodLegs您希望在应用其他标准之前,将总和应用于满足先前定义标准的支腿集,还是应用于整个支腿集?
var goodTables = 
    from table in _dbContext.All<Table>()
    where table.CurrentLevel <= salesCriteria.MaxTableLevel
    let sumOfWidthOfGoodLegs = 
        table.Leg
        .Where(leg=> salesCriteria.StartDate <= leg.AddDate)
        .Where(leg=> leg.AddDate <= salesCriteria.EndDate)
        .Sum(leg => leg.Width)    
    where sumOfWidthOfGoodLegs <= salesCriteria.MaxGoalAmount
    // can insert another where on sumOfWidthOfGoodLegs here as required
    select table;

return goodTables.ToList();