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?因此 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");

数据库中有 null 时处理大小写的 Yoda 比较:

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