我在解决这个方面遇到了一些麻烦。我有一个包含两个属性的对象列表:Alias
和Value
我需要显示这些对象的列表,其中Alias
属性按Value
字符串值分组。像这样:
MyAlias1, MyAlias2, MyAlias3
- Value string which is the same for above three aliases
MyAlias4, MyAlias5
- Value string which is the same for above three aliases
到目前为止我所拥有的是:
var groups = lst.GroupBy(x => new { x.Alias, x.Value });
foreach(var group in groups)
{
@group.Value
}
但是我不知道该怎么做,实际上将它们显示为分组项目。
非常感谢任何帮助!
答案 0 :(得分:1)
我认为您需要按值进行分组,然后对于每个组,您可以打印出您需要的内容:
@{ var groups = lst.GroupBy(x => x.Value); }
@foreach (var group in groups)
{
var aliasString = String.Join(",", group.Select(x => x.Alias));
<p>@aliasString</p>
<p>- @group.Key</p>
}
答案 1 :(得分:0)
这是分组
var groups = lst.GroupBy(x => x.Value);
这里显示
@foreach(var group in groups)
{
<h3>@group.Key</h3>
<ul>
@foreach(var alias in group)
{
<li>@alias.Alias</li>
}
</ul>
}
BTW最好在控制器中创建ViewModel,然后在视图中执行Linq:
public class FooViewModel
{
public string Value { get; set; }
public string Aliases { get; set; } // if you need concatenated string
}
在控制器中:
var model = from x in lst
group x by x.Value into g
select new FooViewModel {
Value = g.Key,
Aliases = String.Join(", ", g.Select(i => i.Alias))
};