linq查询仅在包含"对象引用未设置为对象实例"时失败

Cas*_*sey 3 c# sql linq sharepoint

我有一个2阶段查询连接在Contains运算符上失败.我得到的错误是Object Reference未设置为对象的实例.我正在预先创建动态查询,并在连接中执行.

这有效:AQuery.Where("AssigneeName == \"Michael Jackson \"")

这失败了"对象引用未设置为对象的实例":AQuery.Where("AssigneeName.Contains(\"Michael Jackson \")")

这是我的代码:

        using (ReqEntitiesDataContext dc = new ReqEntitiesDataContext(SPContext.Current.Web.Url))
        {

            // LINQ Deferred Query Execution
            var AQuery = from a in dc.Assignees select a;
            if (assigneeQuery.Count > 0)
            {
                AQuery = from a in AQuery.Where(string.Join(" ", assigneeQuery.ToArray())) select a;
            }

            var RQuery = from r in dc.ReqLibrary select r;
            if (requestQuery.Count > 0)
            {
                RQuery = from r in RQuery.Where(string.Join(" ", requestQuery.ToArray())) select r;
            }


            // LINQ 2 Stage Query Execution Join
            var resultQuery = from a in AQuery.ToList() 
                              join r in RQuery on a.Title equals r.RequestID
                              orderby r.RequestID ascending
                              select new RequestType
                              {
                                  RequestID = r.RequestID,
                                  ReceivedDate = r.ReceivedDate.Value,
                                  RequestType = r.RequestType,                                 
                                  Assignee = a.AssigneeName,
                                  AssigneeSection = a.AssigneeSection,
                                  AssigneeDivision = a.AssigneeDivision,
                                  RequestStatus = r.RequestStatus
                              };

            CreateTableResults(resultQuery);
        }
Run Code Online (Sandbox Code Playgroud)

Jon*_*arr 11

您需要处理AssigneeName为null的情况.

  • 好的,可以,添加(AssigneeName!= NULL和AssigneeName.Contains(\“ Michael Jackson \”)“) (2认同)

Moh*_*eli 5

首先,确保用户名不为空。然后搜索一下

 var result = _users.Where(x => !string.IsNullOrEmpty(x.UserName) && x.UserName.Contains(userName)).ToList();
Run Code Online (Sandbox Code Playgroud)