0

次の画像では、ブレークポイントを配置して 2 つのステップをデバッグした場所を確認できます。また、両方の割り当てがうまく機能し、カウントも同じであることもわかります。

これは機能します

ただし、次のことを行う場合。まったく同じ呼び出しを実行しますが、3行目で直接中断するだけで、これが起こります

これは動作しません

set.QuestionSet.Questions は割り当て前に 8 のカウントを持つ必要があるため、何らかの理由で適切に割り当てられていないようです。これは、DB からデータを取得する方法と関係があると思われます。

Question と QuestionSet は通常の POCO であり、メソッド全体のコードは次のとおりです。

    public IEnumerable<QuestionSet> SearchAndFilterQuestionsAndSets(string searchString, int nrPerPage, int page, out int totalSearchCount)
    {
        searchString = searchString.ToLower();
        List<QuestionSet> finalList = new List<QuestionSet>();

        var result = ActiveContext.QuestionSets
        .Select(x => new
        {
            QuestionSet = x,
            Questions = x.Questions.Where(
                y =>
                    y.Description.ToLower().Contains(searchString)
            ).OrderBy(
                z => z.Description
            )
        })
        .ToList();

        foreach (var set in result)
        {
            //If our search matched the set itself we load all questions
            if (set.QuestionSet.Name.ToLower().Contains(searchString))
            {
                //we dont bring empty sets
                if (set.QuestionSet.Questions.Count() > 0)
                {
                    set.QuestionSet.Questions = set.QuestionSet.Questions.ToList<Question>().OrderBy(x => x.Description).ToList<Question>();
                    finalList.Add(set.QuestionSet);
                }
            }
            //We had one or more questions matching the search term
            else if (set.Questions.Count() > 0)
            {
                var b = set.Questions.ToList<Question>();
                set.QuestionSet.Questions = set.Questions.ToList<Question>();
                finalList.Add(set.QuestionSet);
            }
        }

        totalSearchCount = finalList.Count();
        return finalList.Skip((page - 1) * nrPerPage).Take(nrPerPage);
    }

アップデート

失敗したelse ifで代わりにこれを行うと

var a = new QuestionSet();
a.Id = set.QuestionSet.Id;
a.Name = set.QuestionSet.Name;
a.Questions = set.Questions.ToList<Question>();
finalList.Add(a);

その後、機能するので、問題は匿名オブジェクト内にありますが、デバッガーを使用してステップスルーすると機能し、そうでない場合は機能するのはなぜですか?? 私を困惑させてください。

4

1 に答える 1