C# LINQ-如果查询不存在的元素,则结果不为null
目前,我有一个数据表,包括水果、等级和价格。我的表格中可用的分数是A、B和C。请查看代码片段。正如你所看到的,我把D放在where过滤器中。我想查询将为空。但是在我运行代码之后,程序提示notnull?什么?。那么,我可以知道查询中的是什么,如果D不在表中,如何检测它吗 附言:我是新手 C代码段:C# LINQ-如果查询不存在的元素,则结果不为null,c#,linq,null,C#,Linq,Null,目前,我有一个数据表,包括水果、等级和价格。我的表格中可用的分数是A、B和C。请查看代码片段。正如你所看到的,我把D放在where过滤器中。我想查询将为空。但是在我运行代码之后,程序提示notnull?什么?。那么,我可以知道查询中的是什么,如果D不在表中,如何检测它吗 附言:我是新手 C代码段: var query = (from p in db where p.grade == "D" select p.price).ToArray(
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 ifItemExist = db.Any(p=> p.grade == "D");
因为你正在做ToArray,所以它永远不会为空。你可以检查一下长度
if(query.Length <= 0)
或
或更短:
var ifItemExist = db.Any(p=> p.grade == "D");
实际上,它不是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");
}
实际上,它不是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");
}
由于此方法仍将返回数组,因此不会得到null。数组将为空,但数组不为空。这就是null存在的原因。。。它是用来区分零值和无值 如果要测试结果中是否有任何元素,可以使用:
if (query.Any())
由于此方法仍将返回数组,因此不会得到null。数组将为空,但数组不为空。这就是null存在的原因。。。它是用来区分零值和无值 如果要测试结果中是否有任何元素,可以使用:
if (query.Any())
哦,是的!数组。长度。。。。。。。妈的,我的脑子被困在中午了。谢谢你的解决方案+1 C=哦,是的!数组。长度。。。。。。。妈的,我的脑子被困在中午了。谢谢你的解决方案+1 C=