Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 实体框架MVC中的分组_Asp.net Mvc_Linq_C# 4.0_Entity Framework 4.1 - Fatal编程技术网

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的好例子