4

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

这有效: 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);
        }
4

3 回答 3

16

您需要处理 AssigneeName 为空的情况。

于 2013-08-22T17:35:45.190 回答
5

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

 var result = _users.Where(x => !string.IsNullOrEmpty(x.UserName) && x.UserName.Contains(userName)).ToList();
于 2017-09-17T13:36:01.077 回答
0

我有一个类似的问题,但我没有尝试过滤任何输出 - 结果模型中的每个映射字段都将“实体键”设置为 true。

即以下是到处抛出“对象引用未设置为对象的实例”错误。

var x = entities.Users
        .AsEnumerable()
        .Select(x => x)
        .ToList();

只需打开模型的 EDMX 文件,选择必要的对象,单击每个属性,然后将Entity Key属性设置为False即可为我解决此问题。:)

于 2015-08-06T04:12:15.573 回答