Javascript ASP.NET-如何更改JSON序列化的方式?

Javascript ASP.NET-如何更改JSON序列化的方式?,javascript,c#,asp.net,json,Javascript,C#,Asp.net,Json,我使用ASP.NET返回带有以下查询的Json文件: public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed for brevity

我使用ASP.NET返回带有以下查询的Json文件:

public ActionResult getTransactionTotals(int itemID)
    {
        DBEntities db = new DBEntities();

        var query = from trans in db.Transactions
                    // Linq query removed for brevity
                        into selection
                        select new TransactionAmount
                        {
                            name = selection.Key,
                            amount = selection.Select(t => t.TransactionId).Distinct().Count()
                        };

        return Json(query.ToList(),JsonRequestBehavior.AllowGet);
    }
下面是创建的对象:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace OhYeah
{
public class TransactionAmount
{
    public String name { get; set; }
    public int amount { get; set; }
}
}
以以下形式返回JSON:

[{"name":"billy", "amount":5}, {"name":"timmy", "amount":18}]
现在,我想编辑Linq查询或Json序列化程序以输出如下所示的Json:

[{"billy":5, "timmy":18}]
请注意,第二个Json是单个项目,其中“name”键现在是第一个Json中“name”的值。“名称”和“金额”键将被丢弃。“name”值始终是唯一的,不能有两个billy或timmy,因此不必考虑这一点

我该怎么做?

这样试试

public ActionResult getTransactionTotals(int itemID)
    {
        DBEntities db = new DBEntities();

        var query = (from trans in db.Transactions
                    // Linq query removed for brevity
                        into selection
                        select new TransactionAmount
                        {
                            name = selection.Key,
                            amount = selection.Select(t => t.TransactionId).Distinct().Count()
                        }).ToDictionary(k => k.name, v => v.amount);



        return Json(query,JsonRequestBehavior.AllowGet);
    }

序列化后将查询放入词典

My TransactionMount没有ToDictionary方法。TransactionMount是一个非常基本的类,它只保存一个字符串和一个int。它不扩展可能包含ToDictionary的任何其他类。如何将ToDictionary功能添加到类中?在ToList之前和ToDictionary之后,在调用call
.ToList()
ToDictionary()之前,您可能必须将查询包装在
()
中;所以
var query=(从trans……选择new{…})。ToDictionary()
感谢您的帮助Fabio和C Sharper!最后的解决方案稍有不同,介意我把你的帖子编辑成对我有用的吗?(从trans……选择new{…})。ToDictionary()也是对的,为我的错误道歉