如何获取通用列表中的最后一个对象?

时间:2009-10-05 16:25:40

标签: c# generics iqueryable

我将填充的SelectList传递给我的View,我想将所选值默认为列表中的 last 记录。到目前为止我已经:

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

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

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

提前感谢您的帮助。如果您想了解更多信息,请与我们联系。

3 个答案:

答案 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