2012-07-11 21 views
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方法的對象,我應該創建一個視圖模型?或與asp.net mvc做到這一點?

我可以做一個查詢,得到的結果是這樣的:

enter image description here

但我願做這樣的查詢(或方式來創建我的ASP查看結果。淨MVC):

enter image description here

感謝

+0

「列是Field對象,值是FieldValue對象」仍然不清楚這是什麼意思 – Chandu 2012-07-11 12:50:35

+0

您的意思是* pivot *從查詢返回的結果集? – 2012-07-11 12:51:18

+0

嗨,大家好,抱歉,看看我的編輯,我添加一些圖像來說明更好!謝謝 – 2012-07-11 13:01:05

回答

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

Field 2

  • 一些價值3
  • 一些價值4

通過使用這種方法,但是,您可以控制格式化你想獲得所需的輸出。

+0

謝謝@Tommy,我會稍後再試,然後回來檢查一下你的喚醒器。 :) – 2012-07-11 13:23:28

0

與問題不明確。如果你想把行轉換成列 - 你可以使用pivot。但我會建議,而不是運行結果集轉置,讓它返回轉置的結果集。我的意思是在你的查詢本身中處理行到列的轉換

+0

嗨,我不確定是否有可能,但看看我的編輯,我添加一些圖像。 – 2012-07-11 13:01:55