0

在下图中,您可以看到我放置断点的位置,然后进行了两步调试。您还可以看到,两个作业都非常有效,它们的计数相同且相同。

这有效

但是,如果我执行以下操作。运行完全相同的调用,但只在第三行直接中断,然后发生这种情况

这不起作用

set.QuestionSet.Questions 在分配之前应该有 8 个计数,所以它似乎由于某种原因没有正确分配。我怀疑这与我如何从数据库中获取数据有关。

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);
    }

更新

如果我在失败的情况下这样做,否则如果

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

0

可能与匿名类型的后期绑定有关

于 2013-09-19T08:05:12.693 回答