C# 将多行合并到对象属性中
我有一个SQL查询,它从使用日志中返回行,如:C# 将多行合并到对象属性中,c#,asp.net-mvc,json,linq,C#,Asp.net Mvc,Json,Linq,我有一个SQL查询,它从使用日志中返回行,如: ActionID ActionType ActionDetail ActionDetailValue 1 SEARCH Query jones 1 SEARCH ResultCount 156 2 DOCUMENT_VIEW Title All About Mister Jones
ActionID ActionType ActionDetail ActionDetailValue
1 SEARCH Query jones
1 SEARCH ResultCount 156
2 DOCUMENT_VIEW Title All About Mister Jones
2 DOCUMENT_VIEW DocumentID EKDJF34
i、 e.用户执行的每个操作可能有多行,其中包含有关所执行操作的不同详细信息。目前,这在C中表示为:
似乎是LINQ的工作?我不会过多地开发Json部分,我认为当您有足够好的数据结构时,您将能够处理它。你可以试试这个:
var grouped =
from a in actions
group a by new { a.ActionID, a.ActionType }
into g
select new
{
g.Key.ActionID,
g.Key.ActionType,
Values =
(from x in g
select new KeyValuePair<string, string>(x.ActionDetail, x.Value))
.ToDictionary()
};
这并不完全是您要寻找的,但它非常接近,也许处理它会更好,因为它将“键”与值分开
var trailItems = {"trailitems": [
{"ActionID": "1", "ActionType": "SEARCH", "Query": "jones", "ResultCount" : "156"},
{"ActionID": "2", "ActionType": "DOCUMENT_VIEW", "Title": "All About Mister Jones", "DocumentID" : "EKDJF34"}
]};
var grouped =
from a in actions
group a by new { a.ActionID, a.ActionType }
into g
select new
{
g.Key.ActionID,
g.Key.ActionType,
Values =
(from x in g
select new KeyValuePair<string, string>(x.ActionDetail, x.Value))
.ToDictionary()
};
[
{"ActionID":1,"ActionType":"SEARCH","Values":{"Query":"jones","ResultCount":"156"}},
{"ActionID":2,"ActionType":"DOCUMENT_VIEW","Values":{"Title":"All About Mister Jones","DocumentID":"EKDJF34"}}
]