Oblivious7
Oblivious7

Reputation: 97

Due to LINQ Retrieving of Record data's i have this error: NullReferenceException was unhandled by user code

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
            {

            }
        }

The Error occures when i reach break point 1st IF Statement the record on my database shows that its not empty which its value is "WebAdmin" but then suppost to be it should pick it up and store it to the Session["PORT1"] that i have made is there something i missed or i'm doing it wrong on my linq Query. NOTE:*This is an ASP.NET C# Application

EDIT 10/2/2013 0420PM: It's still an Error After using that method sir.

enter image description here

Upvotes: 0

Views: 328

Answers (2)

Adil
Adil

Reputation: 148110

You have to check query.PORT1 for null before calling ToString on it, you can use String.IsNullOrEmpty to check both conditions. Before checking query.PORT1 you need to check if query is null or not. You also need to use && instead of or operator as || will cause the right side of or operator to be evaluated if left is false and on right side calling ToString on null will again through exception.

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

Using IsNullOrEmpty

if(query != null &&  !String.IsNullOrEmpty(query.PORT1))
{
   Session["Port1"] = query.PORT1;
}

Upvotes: 0

Viper
Viper

Reputation: 2236

1) you should check query for null when you use FirstOrDefault

2) you need to check each PORTX for null

3) use string.IsNullOrEmpty( ) to check if the string of PORTX is null

var query = ( ... ).FirstOrDefault( );
if( query != null )
{
    if( query.PORT1 != null && !string.IsNullOrEmpty( query.PORT1.ToString( ) ) )
    {
    }
    else { ... }
}

Upvotes: 1

Related Questions