Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中从JSON字符串中检索不同对象类型的计数#_C#_Jquery_Datatables - Fatal编程技术网

C# 如何在c中从JSON字符串中检索不同对象类型的计数#

C# 如何在c中从JSON字符串中检索不同对象类型的计数#,c#,jquery,datatables,C#,Jquery,Datatables,我有一个包含数据的单数组json字符串: [{"Name":"John","Age":"22"}, {"Name":"Jack","Age":"56"}, {"Name":"John","Age":"82"}, {"Name":"Jack","Age":"95"}] 我已经反序列化了数据,并成功地将数据写入jquery数据表。但是,我现在想在datatable中添加一列,以包含john和jack姓名的计数,这些姓名都在一列中。我可以通过在循环中说以下内容来获得单个计数: if (people[

我有一个包含数据的单数组json字符串:

[{"Name":"John","Age":"22"}, {"Name":"Jack","Age":"56"}, {"Name":"John","Age":"82"}, {"Name":"Jack","Age":"95"}]
我已经反序列化了数据,并成功地将数据写入jquery数据表。但是,我现在想在datatable中添加一列,以包含john和jack姓名的计数,这些姓名都在一列中。我可以通过在循环中说以下内容来获得单个计数:

if (people[i].Name == "John")
   {
                name_count++;
   }
if (people[i].Name == "Jack")
   {
          name_count2++;
   }

如何使这些数据显示在与包含jack或john名称的行匹配的一列中?我用的是C#。提前感谢

我建议使用下划线.js(http://documentcloud.github.com/underscore). 您可以轻松实现所需的任何类型的map/reduce/select。这里有一个例子:

var people = [{"Name":"John","Age":"22"}, {"Name":"Jack","Age":"56"}, {"Name":"John","Age":"82"}, {"Name":"Jack","Age":"95"}];

var num_johns = _(people).select(function(obj){ 
    return obj.Name === 'John'}).length;

alert(num_johns); //alerts 2

您甚至可以更进一步,用一些curry来计算select函数,这取决于您的具体问题。

我建议使用下划线.js(http://documentcloud.github.com/underscore). 您可以轻松实现所需的任何类型的map/reduce/select。这里有一个例子:

var people = [{"Name":"John","Age":"22"}, {"Name":"Jack","Age":"56"}, {"Name":"John","Age":"82"}, {"Name":"Jack","Age":"95"}];

var num_johns = _(people).select(function(obj){ 
    return obj.Name === 'John'}).length;

alert(num_johns); //alerts 2

您甚至可以更进一步,用一些currying来计算select函数,这取决于您的具体问题。

您可以对数组进行linq分组

    var peeps = from person in people 
        group person by person.name into bucket 
        select new { name = bucket.Key, count = bucket.Count() };
这将创建一个具有名称和计数属性的可枚举匿名类型,您可以对其进行迭代以获取名称的名称和计数,例如:

class Guy
    {
        public int age; public string name;
        public Guy( int age, string name ) {
            this.age = age;
            this.name = name;
        }

    }

    class Program
    {
        static void Main( string[] args ) {
            var GuyArray = new Guy[] { 
            new Guy(22,"John"),new Guy(25,"John"),new Guy(27,"John"),new Guy(29,"John"),new Guy(12,"Jack"),new Guy(32,"Jack"),new Guy(52,"Jack"),new Guy(100,"Abe")};

        var peeps = from f in GuyArray group f by f.name into g select new { name = g.Key, count = g.Count() };

            foreach ( var record in peeps ) {
                Console.WriteLine( record.name + " : " + record.count );
            }

        }
    }
将发出:

John : 4
Jack : 3
Abe : 1

您可以对数组进行linq分组

    var peeps = from person in people 
        group person by person.name into bucket 
        select new { name = bucket.Key, count = bucket.Count() };
这将创建一个具有名称和计数属性的可枚举匿名类型,您可以对其进行迭代以获取名称的名称和计数,例如:

class Guy
    {
        public int age; public string name;
        public Guy( int age, string name ) {
            this.age = age;
            this.name = name;
        }

    }

    class Program
    {
        static void Main( string[] args ) {
            var GuyArray = new Guy[] { 
            new Guy(22,"John"),new Guy(25,"John"),new Guy(27,"John"),new Guy(29,"John"),new Guy(12,"Jack"),new Guy(32,"Jack"),new Guy(52,"Jack"),new Guy(100,"Abe")};

        var peeps = from f in GuyArray group f by f.name into g select new { name = g.Key, count = g.Count() };

            foreach ( var record in peeps ) {
                Console.WriteLine( record.name + " : " + record.count );
            }

        }
    }
将发出:

John : 4
Jack : 3
Abe : 1

谢谢你的回复。然而,我正在寻找一个c#解决方案。实际上,我有一个程序的副本,它使用客户端代码实现了完整的功能和正确的结果。但是,由于处理量太大,它现在变得非常慢,需要一个C#的替代解决方案。感谢您的回复。然而,我正在寻找一个c#解决方案。实际上,我有一个程序的副本,它使用客户端代码实现了完整的功能和正确的结果。然而,由于处理量很大,它现在变得非常慢,需要一个C#中的替代解决方案。