0
private void getUserLoginDepartment(string AccessID, string UserPROFid)
        {
            try
            {
                DBWPAccountRecordsDataContext DBACCOUNT = new DBWPAccountRecordsDataContext();
                var query = (from i in DBACCOUNT.WP_UserAccessPorts
                             join
                                 z in DBACCOUNT.WP_Departments on i.AccessPortID equals z.Dept_ID
                             where i.AccessPortID == AccessID && i.ProfileUser_ID == UserPROFid
                             select new
                             {
                                 PORT1 = i.AccessPoint1,
                                 PORT2 = i.AccessPoint2,
                                 PORT3 = i.AccessPoint3,
                                 PORT4 = i.AccessPoint4,
                                 DEPT = z.Dept_DESC,
                                 DEPTPORT = z.Dept_PortNo
                             }).FirstOrDefault();
                if (query.PORT1.ToString() != null || query.PORT1.ToString() != string.Empty)
                { Session["Port1"] = query.PORT1; }
                else { Session["Port1"] = ""; }
                if (query.PORT2.ToString() != null || query.PORT2.ToString() != string.Empty)
                { Session["Port2"] = query.PORT2; }
                else { Session["Port2"] = ""; }
                if (query.PORT3.ToString() != null || query.PORT3.ToString() != string.Empty)
                { Session["Port3"] = query.PORT3; }
                else { Session["Port3"] = ""; }
                if (query.PORT4.ToString() != null || query.PORT4.ToString() != string.Empty)
                { Session["Port4"] = query.PORT4; }
                else { Session["Port4"] = ""; }                
            }
            finally
            {

            }
        }

当我到达断点第一个 IF 语句时发生错误,我的数据库上的记录显示它不是空的,它的值为“WebAdmin”,但随后假设它应该将其拾取并将其存储到 Session["PORT1"] 中我做了什么我错过了或者我在我的 linq 查询上做错了。注意:*这是一个 ASP.NET C# 应用程序

编辑 10/2/2013 0420PM:先生,使用该方法后仍然是错误。

在此处输入图像描述

4

2 回答 2

1

1)您应该检查query何时null使用FirstOrDefault

2)您需要检查每个 PORTXnull

3) 用于string.IsNullOrEmpty( )检查 PORTX 的字符串是否为null

var query = ( ... ).FirstOrDefault( );
if( query != null )
{
    if( query.PORT1 != null && !string.IsNullOrEmpty( query.PORT1.ToString( ) ) )
    {
    }
    else { ... }
}
于 2013-10-02T08:05:10.493 回答
0

您必须在调用它之前进行检查query.PORT1,您可以使用String.IsNullOrEmpty来检查这两个条件。在检查 query.PORT1 之前,您需要检查是否是。您还需要使用 && 而不是 or 运算符,因为如果 left is和右侧调用 ToString on null 将导致 or 运算符的右侧被评估,将再次通过异常。nullToStringquerynull||false

if (query != null && query.PORT1 != null && query.PORT1.ToString() != string.Empty)
                { Session["Port1"] = query.PORT1; }

使用 IsNullOrEmpty

if(query != null &&  !String.IsNullOrEmpty(query.PORT1))
{
   Session["Port1"] = query.PORT1;
}
于 2013-10-02T08:00:58.403 回答