在下图中,您可以看到我放置断点的位置,然后调试两步。您还可以看到两个作业都很有效,它们具有相同的计数并且是相同的。
但是,如果我执行以下操作。运行完全相同的调用,但只在第三行直接中断,然后才开心
set.QuestionSet.Questions在分配之前应该有8个计数,因此它似乎由于某种原因没有正确分配。我怀疑这与我如何从数据库中获取数据有关。
问题和问题集是普通的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);
然后它工作,所以问题在于匿名对象,但是为什么当我逐步调试而不是其他?叫我困惑。
答案 0 :(得分:0)
可能与匿名类型的后期绑定有关