English 中文(简体)
如何检查 null 值的 var?
原标题:How to check a var for null value?

我使用PetaPoco微型ORM和C#4.0。

下面的代码从数据库中取回一行:

var result = db.SingleOrDefault<TdUsers>(getUserQuery);

我想看看结果是否包含任何行,是否是空的。 这样做的最佳方式是什么?

最佳回答
if (result == null || result.Count() == 0) {
    // Checks whether the entire result is null OR
    // contains no resulting records.
}

我认为问题不在您对 null 的检查中, 因为 Linq 是懒惰的装入。 您的错误在于使用表达式 db. SingleOrDefault< TdUsers> (getUserQuery);

.Single<T>(expression) does not return null - it errors if the result returns no values. .SingleOrDefault<T>(expression), however, returns a null value if the expression results in no values - and therefore is best combined with an if (result == null) type check, as you re using here.

问题回答
var result = db.SingleOrDefault<TdUsers>(getUserQuery);

In above code SingleOrDefault will return null vale or the specified generic type(it s known on runtime).

要检查返回的值是否无效, 您可以简单地使用

if(result!=null)
{
//do your code stuff 
}
else
{
//stuff do be done in case where result==null
}

你可以做到这一点:

result.ToList() // Convert result to a list

if (result.Any()) {
   // result is not null
}
 var v = result.ToList();

现在检查

if (v is not null)
{

}
else if (v.Count()>0)
{


}




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签