如果来自DataTable的查询为空,则LINQ返回0

时间:2015-07-07 14:23:08

标签: c# linq nullreferenceexception

大家好我有以下查询。有时候,这个查询没有结果,我需要它返回0,而不是错误。

var count= dt.AsEnumerable().Where(x => x.Field<string>("names").Equals(name) && x.Field<string>("port").Equals("true")).Count(); 

我试过添加? 0,但编译器不喜欢这样。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

如果序列为空,

Enumerable.Count不会抛出错误,它会返回0.您是否意味着dt可以是null?因此,DataTablenull或其中一个字符串为null。您不需要使用String.Equals,您可以使用==来有意义地比较字符串,然后您就不会获得例外。您也可以使用Count的重载:

来使用这种更短的方式
if(dt == null) return 0;
return dt.AsEnumerable()
    .Count(x => x.Field<string>("names") == name && x.Field<string>("port") == "true");

答案 1 :(得分: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是否为空。

答案 2 :(得分:0)

数据库中为null时句柄大小写的Yoda比较:

var count= dt.AsEnumerable()
             .Where(x => name.Equals(x.Field<string>("names")) 
                      && "true".Equals(x.Field<string>("port")))
             .Count();

enter image description here