代码之家  ›  专栏  ›  技术社区  ›  daddywoodland

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

  •  1
  • daddywoodland  · 技术社区  · 16 年前

    我正在将填充的selectlist传递给我的视图,我希望将所选值默认为 最后的 在列表中记录。到目前为止,我有:

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

    我得到一个异常,说“查询操作符‘last’不受支持,但我似乎找不到我的泛型列表中的最后一条记录,也找不到任何示例。

    此代码来自“表单视图模型”,它将选择列表从我的存储库传递回视图,我认为我应该在这里执行此操作。不过,我对泛型/mvc/linq还是个新手,所以我很乐意接受其他的建议。

    事先谢谢你的帮助。如果你需要更多的信息,请告诉我。

    3 回复  |  直到 16 年前
        1
  •  5
  •   Jon Skeet    16 年前

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

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

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

        2
  •  1
  •   Mike Hofer    16 年前

    我在msdn上找到这个:

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

        3
  •  0
  •   Ryan Michela    16 年前

    也许这个?

    projBuildNos.Reverse().First().ID