Bri*_*ian 3 c# lambda datetime boolean ternary-operator
这是我的代码:
var now = DateTime.Now;
var firstOfMonth = new DateTime(now.Year, now.Month, 1, 0, 0, 1);
var objectsAfterFirstOfThisMonth= _context.DataObjects
.Where(x => x.dateClosed == null ? x.dateClosed : x.dateCreated > firstOfMonth);
Run Code Online (Sandbox Code Playgroud)
我收到以下编译错误:
“System.Nullable”和“bool”之间没有隐式转换
我对 lambda 语法的理解不足以理解此错误。
如果我无法使用此三元语法,那么我将需要从数据库获取 DataObjects 的完整列表,然后迭代此列表,创建过滤列表(日期晚于当月第一天的那些对象),因为我去。
简而言之,我的目标是:我想获取本月第一天之后发生的所有对象。dateCreated 字段永远不为空。dateClosed 有时为空。dateClosed 更准确,我想尽可能多地比较该日期,但需要依靠 dateCreated 以防 dateClosed 为空。
如果我需要提供更多信息,请告诉我。
提前致谢!
....Where(x => x.dateCreated == null ? x.dateCreated : x.dateClosed > firstOfMonth);
Run Code Online (Sandbox Code Playgroud)
谓词必须求值为 a bool。你的x.dateCreated是一个DateTime?(假设)。你必须在 true 部分做一些计算结果为 a 的事情true/false。
像下面这样的东西应该可以编译,但仅作为示例。我不确定你的实际逻辑应该是什么,因为你说dateCreated永远不会为空,但你正在检查空。请注意,这些都评估为真/假值。
....Where(x => x.dateCreated == null ?
x.dateCreated.HasValue :
x.dateClosed > firstOfMonth);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11564 次 |
| 最近记录: |