目前,我有一个表格,其中包含水果,等级和价格的数据。我的表格中可用的等级是A,B和C。 请查看代码片段。如您所见,我将 D 放入where
过滤器中。我想query
将是空的。但是在我运行代码后,程序提示"不为空?咦?"。那么,我可以知道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?");
由于您正在执行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");
你不会得到 null,因为此方法仍将返回一个数组。数组将为空,但数组不会为空。(这实际上是 null 存在的原因...它是为了区分"零"值和没有值。
如果要测试结果中是否有任何元素,可以使用:
if (query.Any())
实际上,它不是空的,它返回一个与 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");
}