1

我将填充的 SelectList 传递给我的视图,并且我想将所选值默认为列表中的最后一条记录。到目前为止,我有:

IQueryable<BuildNumber> projBuildNos = tcRepository.GetProjectBuildNos();
BuildList = new SelectList(projBuildNos, "ID", "value", projBuildNos.Last().ID);

我收到一个异常说“不支持查询运算符'Last',但我似乎无法获得通用列表中的最后一条记录,也找不到任何示例。

此代码来自“表单视图模型”,将选择列表从我的存储库传递回视图,我认为我应该在这里执行此操作。但是我是 generics/mvc/linq 的新手,所以很高兴有其他建议。

提前感谢您的帮助。如果您想了解更多信息,请告诉我。

4

3 回答 3

5

您是否已经将查询中的所有结果吸入内存?如果是这样,我建议您执行查询并将结果放入列表中:

List<BuildNumber> projBuildNos = tcRepository.GetProjectBuildNos().ToList();
BuildList = new SelectList(projBuildNos, "ID", "value", projBuildNos.Last().ID);

否则,您很容易得到一个执行两次查询的解决方法——可能会给出不一致的结果。

于 2009-10-05T16:33:06.880 回答
1

我在 MSDN 上找到了这个:

Queryable.LastOrDefault -- 返回序列中的最后一个元素,如果序列不包含任何元素,则返回默认值。

于 2009-10-05T16:35:51.450 回答
0

也许这个?

projBuildNos.Reverse().First().ID
于 2009-10-05T16:33:48.160 回答