【问题标题】:Grouping in Entity Framework MVC实体框架 MVC 中的分组
【发布时间】:2011-08-31 10:05:57
【问题描述】:

大家好,我目前有一个正在输出的电话号码列表:-

控制器:-

public ActionResult ViewSubRange(int id)
{
    IEnumerable<Number> numbers = context.Numbers.Where(m => m.RangeID == id).ToList();

    return View("SubRange", numbers);
}

查看:-

@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>

这很好,但是我注意到我们可以输出很多数字。我想知道是否可以对数字进行分组,例如按客户。所以我想要实现的是:-

01132210000-01132210999 客户A

01132211000-01132211009 客户B

01132211010-01132211029 客户中心

【问题讨论】:

  • 我认为您需要编写逻辑来自己组装这些组 - 有 LINQ 可以按客户分组,但我想不出任何方法可以将一组数字转换为描述它们范围的字符串覆盖(除了简单的最小值/最大值,忽略范围是否被覆盖)
  • 就像好的链接:msdn.microsoft.com/en-us/vcsharp/aa336746 Hereyou可以找到linq使用的好例子

标签: asp.net-mvc linq c#-4.0 entity-framework-4.1


【解决方案1】:

你可以定义一个新的视图模型:

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>

【讨论】:

    猜你喜欢
    • 2019-05-14
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多