我需要确定IQueryable方法是否返回Data,或者将其应用于RadGrid的DataSource时为“Empty”,如下所示:
RadGrid.DataSource = Method(x);
if (Method(x) == yyy)
{
button.Enabled = true;
}
else
{
button.Enabled = false;
}
我尝试使用“null”代替“yyy”,但没有成功。单步执行代码时,IQueryable方法返回“Empty”,但我不确定如何使用If语句验证它。
IQueryable方法返回的内容就像返回Empty一样,如何使用If语句验证?
答案 0 :(得分:12)
您可以使用Any()检查IQueryable中是否有任何元素:
RadGrid.DataSource = Method(x);
if (Method(x).Any())
{
button.Enabled = true;
}
else
{
button.Enabled = false;
}
(或者,更短的版本:)
button.Enabled = Method(x).Any();
答案 1 :(得分:6)
您想使用IQueryable.Any
。
bool empty = !queryable.Any();
if(empty) {
// something
}
答案 2 :(得分:0)
尝试类似
的内容RadGrid.DataSource = Method(x);
if (RadGrid.DataSource as MyObject == null)
{
button.Enabled = true;
}
else
{
button.Enabled = false;
}
答案 3 :(得分:-2)
试试这个:
if (Method(x) == Enumerable.Empty<YourType>())
{
// Your code
}
由于Enumerable.Empty<TResult>()
被TResult
缓存,因此它将与Method
重新命名的空序列保持相同的引用,因此将是等同的。
如果您不确定这是否有效,请运行此示例:
using System;
using System.Linq;
class Example
{
static void Main()
{
var first = Enumerable.Empty<Example>();
var second = Enumerable.Empty<Example>();
Console.WriteLine(object.ReferenceEquals(first, second));
}
}