C# 转换列中的行

C# 转换列中的行,c#,asp.net-mvc,nhibernate,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 pu

我正在使用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; }
}

我想知道,如果列是字段对象,值是字段值对象,我该如何得到结果,我应该创建一个ViewModel吗?还是用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; }
}

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


谢谢

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

我认为您需要熟悉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>
}
@model IEnumerable
foreach(Model.GroupBy(x=>x.Field.Name)中的变量字段){
fields.key
    foreach(字段中的变量字段值){
  • @字段值。值
  • }
}
这应该会导致类似于

字段1

  • 某些值1
  • 一些值2
字段2

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


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

“列是字段对象,值是字段值对象”仍然不清楚这意味着什么?你是说pivot从查询返回的结果集?嗨,伙计们,对不起,看一下我的编辑,我添加了一些图像以更好地说明问题!谢谢,嗨,我不确定这是否可能,但看一下我的编辑,我添加了一些图像。谢谢@Tommy,我将稍后再试,然后再检查您的awser.:)