c# - (obj != null) 不起作用

标签 c# linq

它看起来很简单,但我真的不明白。我正在使用 linq 和 Entity Framework 通过像这样的简单查询从数据库中检索对象

loggedinUser = (from user in context.Users
                 where user == _guid
                 select user).ToList()[0];

我知道我可以使用 .FirstOrDefault(),但我认为我的问题与获取用户的方式无关。

获得用户后如果我用这个条件检查它

if (loggedinUser != null)
   {
     ToLocation = String.Format("{0} {1} {2} {3}", loggedinUser.StreetAddress,loggedinUser.City, loggedinUser.Province, loggedinUser.PostalCode);
   }

它不起作用,就好像它是 null,但它不是。当我使用这个条件时它起作用。

if (loggedinUser == null)
{ }
else
{
  ToLocation = String.Format("{0} {1} {2} {3}", loggedinUser.StreetAddress,loggedinUser.City, loggedinUser.Province, loggedinUser.PostalCode);
}

我总是使用这种类型的条件 (Obj != null) 并且它有效,答案应该很简单,但我真的不明白为什么这次不行。我错过了什么吗?

唯一的一点是这个实体的类位于另一个项目中。这会是问题所在吗?

该类所在的工程在VB.Net中:

<Table("Users")>
Public Class User
<Key()>
Public Property UserID As Integer

Public Property Username As String
Public Property PasswordEncrypted As String
Public Property LastLogin As DateTime 
Public Property CreatedByUserID As Integer
Public Property DateCreated As DateTime
Public Property Deleted As Boolean '?
Public Property Email As String
Public Property StreetAddress As String
Public Property City As String
Public Property Province As String
Public Property PostalCode As String

<NotMapped()>
Public Property Lat As Double

<NotMapped()>
Public Property Lon As Double

Public Property GUID As String

<NotMapped()>
Public Property EULAAgreed As DateTime

Public Overrides Function ToString() As String
    Return Username
End Function

Public Overrides Function Equals(ByVal obj As Object) As Boolean
    If (obj Is System.DBNull.Value) Then
        Return MyBase.Equals(obj)
    ElseIf (TypeOf obj Is String) Then
        Return MyBase.Equals(obj)
    Else
        Try
            Return UserID = CType(obj, Entities.User).UserID
        Catch ex As Exception
            Return UserID
        End Try
    End If
End Function

下课

最佳答案

这是因为 LINQ-SQL/EF 不给你 null。他们给你 DBNull。

将您的比较更改为:

if (loggedinUser != DBNull.Value)

关于c# - (obj != null) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291064/

相关文章:

c# - 附加到表达式

c# - 正则表达式根据多次检查取值

c# - 避免 LINQ 中的重复

c# - 有没有办法使用 LINQ 根据封闭条件(即不是简单的 WHERE 子句)选择一系列项目?

c# - 创建文件后删除文件

c# - Entity Framework LINQ 包含不区分大小写

c# - 合并 2 个 LINQ 列表时出错

c# - 1 综合计时器 vs. 多个计时器,每个对象一个计时器

c# - 如何编写简单的 TCP 监听器来发送包?

c# - WPF 共享资源问题 - 没有 App.xaml,没有共享资源