Jor*_*e F 6 c# linq asp.net-mvc razor
也许问题很难解释所有,但这里是我面临的问题,我有一个模型的属性列表
public class ViewModel
{
public int PropertyID {get;set;}
public DateTime Datefield {get;set}
public string OtherProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
然后我用一些值填充列表:
List<ViewModel> listOfValues = new List<ViewModel>();
listOfValues.Add(new ViewModel{
PropertyID = 1,
Datefield = new DateTime(2010, 5,25, 12,00,00),
OtherProperty = "Name1"
});
Run Code Online (Sandbox Code Playgroud)
想象一下Datefield有这个值:
0: 25/05/2010 12:00:00
1: 25/05/2010 12:00:00
2: 26/05/2010 13:00:00
3: 26/05/2010 13:00:00
4: 26/05/2010 14:00:00
5: 27/05/2010 12:00:00
Run Code Online (Sandbox Code Playgroud)
在那之后,我订购简单listOfElements.OrderBy(o => o.Datefield).ThenBy(o => o.Datefield.Hour);的列表,首先按日期排序列表,然后在最近的小时日期之后.
一切正常,但是一个要求是按日期和小时"分组"元素,但不是GroupByLINQ,而是以这种方式使用RAZOR:
<div>
@Model.listOfElements[i].Datefield //0: 25/05/2010 12:00:00
@Model.listOfElements[i].Datefield //1: 25/05/2010 12:00:00
</div>
<div>
@Model.listOfElements[i].Datefield //2: 26/05/2010 13:00:00
@Model.listOfElements[i].Datefield //3: 26/05/2010 13:00:00
</div>
<div>
@Model.listOfElements[i].Datefield //4: 26/05/2010 14:00:00
</div>
<div>
@Model.listOfElements[i].Datefield //5: 27/05/2010 12:00:00
</div>
Run Code Online (Sandbox Code Playgroud)
我想按照html中的日期和小时对它们进行分组,所以匹配的那些是例如div,所以我可以给它们样式,它们是一种类型.我尝试了一些丑陋的razor-html语法,但我不认为这是最好的方法.
希望这个问题是可以理解的.
假设根据您的代码Model.listOfElements包含IEnumerable<ViewModel>给定的内容,您可以使用Linq对日期进行分组,然后每个分组本身将包含该日期组中的项目列表.要获取仅限日期+小时分组,请在分组中使用匿名投影来仅考虑分组中的日期和小时
@foreach (var grp in Model.listOfElements
.OrderBy(m => m.PropertyID)
.GroupBy(m => string.Format("{0:yyyyMMddHH}", m.Datefield)))
{
<div>
@foreach (var itm in grp)
{
<p>@itm.PropertyID - @itm.Datefield</p>
}
</div>
}
Run Code Online (Sandbox Code Playgroud)
预订PropertyID将通过分组来给出您列出的订单.我已将其添加PropertyId到输出中仅用于演示 - 您可以在确认订购后将其删除.
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |