2013-03-16 82 views
0

我在查找這個問題時遇到了一些麻煩。我有一個對象具有兩個屬性的列表:AliasValue按屬性值分組對象

我需要證明這些對象在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 
} 

但我不知道從那裏做,實際上表明他們作爲分組的項目。

任何幫助,非常感謝!

回答

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> 
} 
+0

謝謝Brian! :-)像魅力一樣工作! – bomortensen 2013-03-16 09:45:49

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,最好在控制器創建的ViewModels,然後做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)) 
      }; 
+0

非常感謝:-)我與控制器的ViewModels同意。我要重構一下;-) – bomortensen 2013-03-16 09:47:01

+0

@bomortensen我已經更新了顯示項目樣本的答案 – 2013-03-16 09:49:05