我正在使用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上我的View上创建结果的方法):
由于
答案 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场
第2场
等
通过使用此方法,您可以控制格式,但是您希望获得所需的输出。
答案 1 :(得分:0)
问题不明确。如果要将行转换为列 - 可以使用pivot。但我建议不要在结果集上操作转置,让它返回转置结果集。我的意思是处理将行转换为查询本身的列