LINQ return 0 如果来自 DataTable 的查询为空
LINQ return 0 if query from DataTable is null
大家好我有以下问题。有时,此查询没有结果,我需要它 return 0,而不是错误。
var count= dt.AsEnumerable().Where(x => x.Field<string>("names").Equals(name) && x.Field<string>("port").Equals("true")).Count();
我试过添加?? 0 但编译器不喜欢那样。
感谢您的帮助!
这样做:
var count=dt != null ? dt.AsEnumerable().Where(x => x.Field<string>("names").Equals(name) && x.Field<string>("port").Equals("true")).Count() : 0;
在对 dt 执行任何操作之前,它会简单地检查 dt 是否为 null。
如果序列为空,Enumerable.Count
不会抛出错误,它是 returns 0。您的意思是 dt
可以是 null
?因此 DataTable
是 null
或者其中一个字符串是 null
。你不需要使用 String.Equals
你可以使用 ==
来有意义地比较字符串,那么你就不会得到异常。您还可以使用 Count
:
的重载来使用这种更短的方式
if(dt == null) return 0;
return dt.AsEnumerable()
.Count(x => x.Field<string>("names") == name && x.Field<string>("port") == "true");
数据库中有 null 时处理大小写的 Yoda 比较:
var count= dt.AsEnumerable()
.Where(x => name.Equals(x.Field<string>("names"))
&& "true".Equals(x.Field<string>("port")))
.Count();
大家好我有以下问题。有时,此查询没有结果,我需要它 return 0,而不是错误。
var count= dt.AsEnumerable().Where(x => x.Field<string>("names").Equals(name) && x.Field<string>("port").Equals("true")).Count();
我试过添加?? 0 但编译器不喜欢那样。
感谢您的帮助!
这样做:
var count=dt != null ? dt.AsEnumerable().Where(x => x.Field<string>("names").Equals(name) && x.Field<string>("port").Equals("true")).Count() : 0;
在对 dt 执行任何操作之前,它会简单地检查 dt 是否为 null。
Enumerable.Count
不会抛出错误,它是 returns 0。您的意思是 dt
可以是 null
?因此 DataTable
是 null
或者其中一个字符串是 null
。你不需要使用 String.Equals
你可以使用 ==
来有意义地比较字符串,那么你就不会得到异常。您还可以使用 Count
:
if(dt == null) return 0;
return dt.AsEnumerable()
.Count(x => x.Field<string>("names") == name && x.Field<string>("port") == "true");
数据库中有 null 时处理大小写的 Yoda 比较:
var count= dt.AsEnumerable()
.Where(x => name.Equals(x.Field<string>("names"))
&& "true".Equals(x.Field<string>("port")))
.Count();