使用求和进行多重比较的c#lambda表达式
我尝试在lambda表达式中使用Sum方法进行比较,但我想将其用于多次比较。我如何做到这一点?我看了“Let”和“SelectMany”,但还没有找到答案 下面是代码的外观:使用求和进行多重比较的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
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();