视图中的Rowspan(mvc4)

时间:2015-04-23 09:48:29

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

我将MVC 4与实体框架结合使用。我有以下问题。

视图中的原始数据以这种方式显示:

id | name| email| roles| modules
1|name1| email1| role1| module1
1| name1| email1| role2| module1
1| name1| email1|role3| module1

我需要做的是像这样的行盘

id | name| email| roles| modules
1|name1| email1| role1, role2, role3| module1

我认为在控制器中制作它比在视图中制作它更好。如果是这样,如何使用Linq或简单列表?

1 个答案:

答案 0 :(得分:3)

您需要的只是GroupBy: -

IEnumerable<TestForms.Models.v_HmsUnacceptedForms> result = data.GroupBy(x => x.id)
                 .ToList()   //To force run projection in memory.
                 .Select(x => 
               {
                     var firstRecord = x.FirstOrDefault();
                     return new TestForms.Models.v_HmsUnacceptedForms
                    {
                       id = x.Key,
                       name = firstRecord != null ? firstRecord.name : String.Empty,
                       email = firstRecord != null ? firstRecord.email: String.Empty,
                       roles = String.Join(",",x.Select(z => z.roles),
                       modules = firstRecord != null ? firstRecord.modules : String.Empty
                    };
               });

在这里,我已经考虑过,对于每个ID,您需要第一个name,email and modules列。如果不是这种情况,您可以按多个列进行分组,而不是像new { x.id, x.name, x.email }这样的ID。