Asp.net mvc 实体框架MVC中的分组
您好,我目前有一个电话号码列表,使用以下方式输出:- 控制器:-Asp.net mvc 实体框架MVC中的分组,asp.net-mvc,linq,c#-4.0,entity-framework-4.1,Asp.net Mvc,Linq,C# 4.0,Entity Framework 4.1,您好,我目前有一个电话号码列表,使用以下方式输出:- 控制器:- public ActionResult ViewSubRange(int id) { IEnumerable<Number> numbers = context.Numbers.Where(m => m.RangeID == id).ToList(); return View("SubRange", numbers); } public ActionResult视图子范围(int-id) {
public ActionResult ViewSubRange(int id)
{
IEnumerable<Number> numbers = context.Numbers.Where(m => m.RangeID == id).ToList();
return View("SubRange", numbers);
}
public ActionResult视图子范围(int-id)
{
IEnumerable numbers=context.numbers.Where(m=>m.RangeID==id.ToList();
返回视图(“子范围”,数字);
}
视图:-
@model IEnumerable<TelephoneNumberManagement.Models.Number>
<table>
<tr>
<th>
Number
</th>
<th>
Status
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Number1</td>
<td>@item.Status.StatusName</td>
</tr>
}
</table>
@model IEnumerable
数
地位
@foreach(模型中的var项目)
{
@第1项
@item.Status.StatusName
}
这很好,但是我注意到我们可以输出很多数字。我想知道是否可以将数字分组,例如按客户分组。因此,我想要实现的是:-
01132210000-01132210999客户A
011321000-0113211009客户B
0113211010-0113211029客户C
可以定义新的视图模型:
public class MyViewModel
{
public string StatusName { get; set; }
public string Numbers { get; set; }
}
然后按客户名称分组:
public ActionResult ViewSubRange(int id)
{
var numbers = context.Numbers
.Where(m => m.RangeID == id)
.GroupBy(x => x.Status.StatusName)
.Select(x => new MyViewModel
{
StatusName = x.Key,
// TODO: could change the format if you will or
// select the min and max or whatever you need
Numbers = string.Join("-", x.Select(n => n.Number1))
})
.ToList();
return View(numbers);
}
最后,在你看来:
@model IEnumerable<MyViewModel>
<table>
<tr>
<th>Number</th>
<th>Status</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Numbers</td>
<td>@item.StatusName</td>
</tr>
}
</table>
@model IEnumerable
数
地位
@foreach(模型中的var项目)
{
@项目.编号
@item.StatusName
}
我认为您需要自己编写逻辑来组装组-有LINQ可以按客户分组,但我想不出任何方法将一组数字转换为描述其覆盖范围的字符串(除了简单的最小值/最大值,忽略是否覆盖范围)就像好的链接一样:在这里你可以找到使用linq的好例子