我将填充的SelectList传递给我的View,我想将所选值默认为列表中的 last 记录。到目前为止我已经:
IQueryable<BuildNumber> projBuildNos = tcRepository.GetProjectBuildNos();
BuildList = new SelectList(projBuildNos, "ID", "value", projBuildNos.Last().ID);
我得到一个例外,说“查询运算符'Last'不受支持,但我似乎无法访问我的通用列表中的最后一条记录,但找不到任何示例。
此代码来自“表单视图模型”,将选择列表从我的存储库传递回视图,我想我应该在这里执行此操作。但是我是generics / mvc / linq的新手,所以很乐意提供其他建议。
提前感谢您的帮助。如果您想了解更多信息,请与我们联系。
答案 0 :(得分:5)
您是否已经将查询中的所有结果都吸收到内存中?如果是这样,我建议您执行查询并将结果放入列表中:
List<BuildNumber> projBuildNos = tcRepository.GetProjectBuildNos().ToList();
BuildList = new SelectList(projBuildNos, "ID", "value", projBuildNos.Last().ID);
否则,您可能很容易得到一个执行查询两次的解决方法 - 可能会产生不一致的结果。
答案 1 :(得分:1)
我在MSDN上发现了这个:
Queryable.LastOrDefault - 返回序列中的最后一个元素,如果序列不包含元素,则返回默认值。
答案 2 :(得分:0)
也许这个?
projBuildNos.Reverse().First().ID