Return "NOT NULL" 在我需要说 == NOT NULL 的三元组中?
Return "NOT NULL" in a ternary where I need to say == NOT NULL?
鉴于此代码:
dataSource = this.db.DailyProductionReportSummaries.Where(
x => x.ShiftDate >= start && x.ShiftDate <= end &&
x.Shift == (shift != null ? shift.Code : "SOMETHING ELSE") && //TODO: "SOMETHING ELSE" where it's not null
x.LineNumber == (shift != null ? lineNumber : 0) && //TODO: 0 where it's not null
x.ProductCode == (productNumber != 0 ? productNumber.ToString() : "SOMETHING ELSE") //TODO: "SOMETHING ELSE" where it's not null
).ToList();
我需要在每个标有 "TODO" 的三元组中说类似的东西(特别针对 //TODO
的第一行:
If shift
has something in it, return shift.Code otherwise, return "Something" that will evaluate to x.Shift == NOT NULL
(or more clearly that it evaluates to x.shift != null
)
我只是坚持一个愿望,还是需要继续将其扩展为一堆 if
陈述? (我正在尝试将多个 if 语句压缩成更紧凑且适应更改配置的内容,而无需大量逻辑更改或重写...
最可读的替代方法是将其扩展为一堆if
语句。请记住,您不需要拼出每个备选方案,不需要一堆 if
嵌套,您可以通过重复调用 Where
简单地链接过滤器。
var query = this.db.DailyProductionReportSummaries.AsQueryable();
query = query.Where(x => x.ShiftDate >= start && x.ShiftDate <= end);
if (shift == null)
query = query.Where(x => x.Shift != null
&& x.LineNumber != null);
else
query = query.Where(x => x.Shift == shift.Code
&& x.LineNumber == lineNumber);
if (productNumber == 0)
query = query.Where(x => x.ProductCode != null);
else
query = query.Where(x => x.ProductCode == productNumber.ToString());
dataSource = query.ToList();
鉴于此代码:
dataSource = this.db.DailyProductionReportSummaries.Where(
x => x.ShiftDate >= start && x.ShiftDate <= end &&
x.Shift == (shift != null ? shift.Code : "SOMETHING ELSE") && //TODO: "SOMETHING ELSE" where it's not null
x.LineNumber == (shift != null ? lineNumber : 0) && //TODO: 0 where it's not null
x.ProductCode == (productNumber != 0 ? productNumber.ToString() : "SOMETHING ELSE") //TODO: "SOMETHING ELSE" where it's not null
).ToList();
我需要在每个标有 "TODO" 的三元组中说类似的东西(特别针对 //TODO
的第一行:
If
shift
has something in it, return shift.Code otherwise, return "Something" that will evaluate tox.Shift == NOT NULL
(or more clearly that it evaluates tox.shift != null
)
我只是坚持一个愿望,还是需要继续将其扩展为一堆 if
陈述? (我正在尝试将多个 if 语句压缩成更紧凑且适应更改配置的内容,而无需大量逻辑更改或重写...
最可读的替代方法是将其扩展为一堆if
语句。请记住,您不需要拼出每个备选方案,不需要一堆 if
嵌套,您可以通过重复调用 Where
简单地链接过滤器。
var query = this.db.DailyProductionReportSummaries.AsQueryable();
query = query.Where(x => x.ShiftDate >= start && x.ShiftDate <= end);
if (shift == null)
query = query.Where(x => x.Shift != null
&& x.LineNumber != null);
else
query = query.Where(x => x.Shift == shift.Code
&& x.LineNumber == lineNumber);
if (productNumber == 0)
query = query.Where(x => x.ProductCode != null);
else
query = query.Where(x => x.ProductCode == productNumber.ToString());
dataSource = query.ToList();