检查null变量C#

时间:2014-03-14 09:19:04

标签: c# variables if-statement null

我创建了一个变量来检查数据库中是否存在行。但是,当我将变量放在if语句中以检查它是否为null且变量为null时,它总是转到else而不是继续if语句。

是否有另一种方法可以检查变量是否为空而不是== null

var following = objCtx.Followusers.Where(c => c.User1ID == currentUser.Id || c.User2ID == cus.Id);
if (following == null)
{
    using (Html.BeginForm("Followruser", "Users"))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        @Html.Hidden("Id", Id)
        <input type="submit" value="follow" class="btn btn-default" />
    }
}
else
{
    using (Html.BeginForm("unfollowruser", "Users"))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        @Html.Hidden("Id", Id)
        <input type="submit" value="following" class="btn btn-default" />
    }

}

4 个答案:

答案 0 :(得分:3)

Where运算符永远不会返回null。如果您只想检查记录是否存在,那么使用它也是错误的方法。我会改用Any

bool following = objCtx.Followusers.Any(
    c => c.User1ID == currentUser.Id || c.User2ID == cus.Id);

答案 1 :(得分:2)

将其更改为:

var following = objCtx.Followusers.Where(c => c.User1ID == currentUser.Id || c.User2ID == cus.Id).SingleOrDefault();

如果没有找到行,则应该返回NULL。

答案 2 :(得分:0)

返回的对象永远不会为null,但它的值可能是。 如果没有,则使用'FirstOrDefault()'使结果为null:

var following = objCtx.Followusers.Where(c => c.User1ID == currentUser.Id || c.User2ID == cus.Id).FirstOrDefault();

或询问结果是否有任何值:

if(following.Any())

答案 3 :(得分:0)

如果你想保留你给出的内容,你也可以计算谓词返回的值的数量。

if (following != null && following.Count < 1)

我觉得这对你有用。