你可以試試這個:
// your data
var q = new[]
{
new {OBJECT = "Random_Name_1", QTY = 5, TYPE = "A"},
new {OBJECT = "Random_Name_2", QTY = 3, TYPE = "B"},
new {OBJECT = "Random_Name_3", QTY = 8, TYPE = "B"}
};
// construct the object
var obj = new
{
Success = true,
Message = string.Format("Total rows {0}", q.Count()),
Data = q.ToDictionary(
item => item.OBJECT,
item => item.GetType().GetProperties()
.Where(p => p.Name != "OBJECT")
.ToDictionary(p => p.Name, p => p.GetValue(item, null)))
};
// serialize the object (note that you don't need to do that from web api)
var json = JsonConvert.SerializeObject(obj);
注意taht如果你已經知道的數據(即列)的結構,那麼你可以通過避免反射更有效率。意思是:
var obj = new
{
Success = true,
Message = string.Format("Total rows {0}", q.Count()),
Data = q.ToDictionary(
item => item.OBJECT,
item => new { item.QTY, item.TYPE })
};
喔好,我看到你在做什麼有,是的,我試了一下,問題是,Random_Name_1可能不止一次,所以隨着Random_Name_1,Random_Name_2,Random_Name_3我會有3個不同的表,具有相同的數據結構,bue「Random_Name」是一個機器的名稱,並且具有表事件(明星/關閉/開始工作/結束工作/等等等等) – Rafa
然後你的數據集不能用你描述的形式表示,檢查一下JSON是什麼,對象中的每個字段必須是唯一的,你不能一個JSON對象中具有相同名稱的多個字段。使用數組而不是字典。 – Nikolay
事情是,我只想打1分鐘的數據庫,檢索可以說50個表(每個機器我想分析一個),我想爲每個表創建1個js數組。所以,我只是在我的查詢中爲每個表添加一個標識符,然後在C#中我將這些表分開而不返回標識符 – Rafa