转换列中的行

时间:2012-07-11 12:48:25

标签: c# asp.net-mvc nhibernate

我正在使用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做的一种方法?

我可以进行查询以得到这样的结果:

enter image description here

但是我想做这样的查询(或者在asp.net mvc上我的View上创建结果的方法):

enter image description here

由于

2 个答案:

答案 0 :(得分: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

通过使用此方法,您可以控制格式,但是您希望获得所需的输出。

答案 1 :(得分:0)

问题不明确。如果要将行转换为列 - 可以使用pivot。但我建议不要在结果集上操作转置,让它返回转置结果集。我的意思是处理将行转换为查询本身的列