从MVC可枚举模型中选择单个项目

时间:2011-04-19 01:51:21

标签: asp.net-mvc-3 razor html-helper

当使用使用IEnumerable的MVC 3集合时,有没有办法让小查询工作来查找单个值?我一直在尝试一点点成功。

我有一组包含说明和设置的设置。问题是暴露其中一个,因为每个都是独一无二的。我尝试过这样的事情:

var appl = _service.GetSettings(id, app); //Call to service layer & repository
appl.Select(a => a.setting_value.Where(a.setting_name.StartsWith("Login")));

收效甚微(除非我遗漏了什么)。是否可以从可枚举集合中选择一个项目并将其传递给ViewBag或ViewData对象?我想做的事情如下:

var appl = _service.GetSettings(id, app); //Call to service layer & repository
ViewBag.Login = appl.Select(a => a.setting_value.Where(a.setting_name.StartsWith("Login")));

并将此传递给视图,因为我有一个视图,现在将一个集合与单个值组合在一起。

以下似乎在视图中起作用:

Application Name @Html.TextBox("application_name", @Model.FirstOrDefault().app_name)

但我不确定这是否违反了关注点。我在错误的道路上吗?谢谢!

编辑:这就是我需要的。下面的答案让我非常接近+1 +1

ViewBag.Login = appl.Where(a => a.setting_name.StartsWith("Login")).FirstOrDefault().setting_value

2 个答案:

答案 0 :(得分:2)

ViewBag.Login = appl.Select(a => a.setting_value.Where(a.setting_name.StartsWith("Login"))).FirstOrDefault();

这将选择与您的条件匹配的第一个对象并返回单个结果或null

答案 1 :(得分:1)

var appl = _service.GetSettings(id, app);
ViewBag.Login = appl
    .Where(a => a.setting_name.StartsWith("Login"))
    .FirstOrDefault();