目前,我有一张包含数据水果,等级和价格的表格。我的表中可用的等级是 A , B 和 C 。 请查看代码段。正如您所看到的,我将 D 放在where
过滤器中。我想query
将为空。但是在我运行代码之后,程序会提示“Not Null?WTH?”。那么,我可以知道query
中的内容以及如果不在表格中如何检测 D 吗?
p / s:我是新手
C#代码段:
var query = (from p in db
where p.grade == "D"
select p.price).ToArray();
if (query == null)
System.Console.WriteLine("You get Null in the query");
else if (query != null)
System.Console.WriteLine("Not Null? WTH?");
答案 0 :(得分:4)
由于您正在执行ToArray
,因此它永远不会为空。你可以查看长度。
if(query.Length <= 0)
如果你这样做会更好:
var query = (from p in db
where p.grade == "D"
select p.price).Count();
if(query > 0)
或
var ifItemExist = (from p in db
where p.grade == "D"
select p.price).Any();
或更短:
var ifItemExist = db.Any(p=> p.grade == "D");
答案 1 :(得分:3)
您不会为null,因为此方法仍会返回数组。该数组将为空,但该数组不为null。 (这实际上是为什么存在null ...它是区分“零”值和缺少值。
如果您想测试结果中是否有任何元素可以使用:
if (query.Any())
答案 2 :(得分:2)
实际上,它不是null,它返回一个与null不同的空数组。
或者,你可以这样做,
int query = (from p in db
where p.grade == "D"
select p.price).Count();
if (query > 0)
{
System.Console.WriteLine("Found");
}
else
{
System.Console.WriteLine("Not Found");
}