0

我正在使用 NHibernate 开发一个 asp.net mvc 应用程序,我有一个查询,我想知道如何转换列中的行?

我有一个动态系统,其模型如下:

// It's a kind of metadata
public class Field
{
   public virtual long Id { get; set; }
   public virtual string Name { get; set; }
}

// the value is here with respective field
public class FieldValue
{
   public virtual long Id { get; set; }
   public virtual Field Field { get; set; }
   public virtual string Value { get; set; }
}

我想知道如何获得列是 Field 对象而值是 FieldValue 对象的结果,我应该创建一个 ViewModel 吗?或者用 asp.net mvc 做的方法?

我可以进行查询以获得如下结果:

在此处输入图像描述

但我想做一个这样的查询(或者一种在我的视图上创建结果的方法 asp.net mvc):

在此处输入图像描述

谢谢

4

2 回答 2

1

我认为您将需要了解/熟悉 GroupBy()。如果您按字段分组,您将“分组”一个字段的所有值,然后移动到下一个。伪代码将类似于以下内容

@model IEnumerable<FieldValue>

foreach(var fields in Model.GroupBy(x=>x.Field.Name){
    <h2>fields.key</h2>
    <ul>
        foreach(var fieldValue in fields){
             <li>@fieldValue.Value</li>
        }
    </ul>
}

这应该呈现类似

字段 1

  • 一些值 1
  • 一些价值 2

字段 2

  • 一些价值 3
  • 一些价值 4

等等

通过使用这种方法,您可以控制想要获得所需输出的格式。

于 2012-07-11T13:08:34.473 回答
0

不清楚这个问题。如果您想将行转换为列 - 您可以使用数据透视。但我建议不要对结果集进行转置,而是让它返回转置的结果集。我的意思是在查询本身中处理行到列的转换

于 2012-07-11T12:54:29.253 回答