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 が null の場合を処理する必要があります。

于 2013-08-22T17:35:45.190 に答える
0

同様の問題がありましたが、出力をフィルター処理しようとしていませんでした。モデル内のすべてのマップされたフィールドで、「エンティティ キー」が true に設定されていることが判明しました。

つまり、以下は「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーをどこにでもスローしていました。

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

モデルの EDMX ファイルを開き、必要なオブジェクトを選択し、各プロパティをクリックしてから、 Entity KeyプロパティをFalseに設定するだけで、これが解決されました。:)

于 2015-08-06T04:12:15.573 に答える