【发布时间】:2018-07-27 07:28:32
【问题描述】:
据我所知,Where 子句至少有 1 个 Datarow。
我在调用 1) Select 2) DefaultIfEmpty 方法之前检查了 != null 当然,它通过了没有问题。
我也试过用?? false 但不知道它的确切工作机制以及如何使用它。
所有列都可以为空。
我不知道这里出了什么问题...整天寻找解决方案.. 因为我是自学程序员,基础知识真的很欠缺。
dt.AsEnumerable().Where(dr => (dr.Field<string>("name_first_API").Contains("Ibuprofen")
|| dr.Field<string>("name_first_API").Contains("Dexibuprofen")
|| dr.Field<string>("name_first_API").Contains("Naproxen")
|| dr.Field<string>("name_first_API").Contains("Meloxicam"))
&& dr.Field<DateTime>("rx_visitdate").Date >= DateTime.Today.AddYears(-3)).
Select(dr => dr.Field<int>("howlongday_rx")).
DefaultIfEmpty(0).Sum();
【问题讨论】:
-
DataTable 或其中一个字段为空
-
@TimSchmelter,我还审阅了您几个小时的答案,但无法理解。 DataTable 肯定不为空。那么如何避免字段为空呢?请多多指教。
-
例如:
...Where(dr=>dr.Field<string>("name_first_API")?.Contains("Ibuprofen")==true || ...) -
@TimSchmelter,好吧,让我试试这样......
-
@TimSchmelter,正如我在 OP 中所写的那样,所有这些都是可以为空的。它们都来自 SQL 表。
标签: c# datatable nullreferenceexception asenumerable