C# 从模型数组透视json数据

C# 从模型数组透视json数据,c#,javascript,arrays,asp.net-web-api,pivot,C#,Javascript,Arrays,Asp.net Web Api,Pivot,我托管了一个web api服务,它返回过去12个月我的模型“myModel”的快照。我在客户机上收到的json数组是由12个“MyDel”对象组成的简单数组 如果myModel具有属性“foo”和“bar”,javascript中是否有一种有效的方法来透视数组以生成属性数组的集合,例如: 我想改变一下 进入 我愿意在服务器端实现,如果这样更有效的话。我的api服务是一个.NET4.5WebAPI 再说一遍。我的问题是,有没有一种超高效的方法可以在javascript中实现这些结果?如果没有,c#

我托管了一个web api服务,它返回过去12个月我的模型“myModel”的快照。我在客户机上收到的json数组是由12个“MyDel”对象组成的简单数组

如果myModel具有属性“foo”和“bar”,javascript中是否有一种有效的方法来透视数组以生成属性数组的集合,例如:

我想改变一下

进入

我愿意在服务器端实现,如果这样更有效的话。我的api服务是一个.NET4.5WebAPI

再说一遍。我的问题是,有没有一种超高效的方法可以在javascript中实现这些结果?如果没有,c#中是否有一个?有人能提供一些简单的示例代码让我继续吗

非常感谢你的帮助。谢谢

编辑:工作代码

尽管我在这个问题上被否决了,但我想我会提供一个javascript的工作示例来实现这一点。它也很快。请注意,每个历史记录都必须有一个按分组记录的键

  _pivot = function(history) {
    var i, pivoted, prop, rec;
    pivoted = {};
    if (history !== null) {
      i = 0;
      while (i < history.length) {
        rec = history[i];
        pivoted[rec.Key] = pivoted[rec.Key] || {};
        for (prop in rec) {
          pivoted[rec.Key][prop] = pivoted[rec.Key][prop] || [];
          if (!pivoted[rec.Key][prop].date) {
            pivoted[rec.Key][prop].push({
              value: rec[prop]
            });
          }

        }
        i++;
      }
      return pivoted;
    }
    return null;
  };
\u pivot=函数(历史){
变量i、枢轴、支柱、rec;
枢轴={};
如果(历史!==null){
i=0;
而(i
好吧,就超高效而言,我认为除非您更改您的下属模型,否则您将不得不迭代您的模型,无论是服务器端还是客户端,并将每个属性分配给不同的数组

var tempFoo = newArray(); tempBar = newArray();
for (var i = 0; i < myModel.length; i++){
    tempFoo.push(myModel[i].foo);
    tempBar.push(myModel[i].bar);
}
var tempFoo=newArray();tempBar=newArray();
对于(var i=0;i
此外,如果您在服务器端代码中对其进行了排序,或者如果它只是从您要从中提取的任何数据库中自动排序,您将看到速度的提高

希望这有帮助,仅供参考,示例是Javascript

V/R

  _pivot = function(history) {
    var i, pivoted, prop, rec;
    pivoted = {};
    if (history !== null) {
      i = 0;
      while (i < history.length) {
        rec = history[i];
        pivoted[rec.Key] = pivoted[rec.Key] || {};
        for (prop in rec) {
          pivoted[rec.Key][prop] = pivoted[rec.Key][prop] || [];
          if (!pivoted[rec.Key][prop].date) {
            pivoted[rec.Key][prop].push({
              value: rec[prop]
            });
          }

        }
        i++;
      }
      return pivoted;
    }
    return null;
  };
var tempFoo = newArray(); tempBar = newArray();
for (var i = 0; i < myModel.length; i++){
    tempFoo.push(myModel[i].foo);
    tempBar.push(myModel[i].bar);
}