Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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语言中使用List和Return List进行GroupBy?_C#_Json_List_Group By - Fatal编程技术网

C# 如何在C语言中使用List和Return List进行GroupBy?

C# 如何在C语言中使用List和Return List进行GroupBy?,c#,json,list,group-by,C#,Json,List,Group By,这是我之前问的一个问题的后续问题。我的数据从JSON对象开始: JSON {"page":"1", "per_page":10, "total":100, "total_pages":10, "data":[{"id":1, "userId":1, "userName":"Jim Silver", "timestamp":16425382171,

这是我之前问的一个问题的后续问题。我的数据从JSON对象开始:

JSON
    {"page":"1",
     "per_page":10,
     "total":100,
     "total_pages":10,
     "data":[{"id":1,
              "userId":1,
              "userName":"Jim Silver", 
              "timestamp":16425382171,
              "txnType":"debit",
              "amount":"$1,000.07",
              "location":{"id":2,
                          "address":"654, Somewhere, Some Street", 
                          "city":"Some City",
                          "zipCode":12345},
                          "ip":"202.210.105.105"},
             {"id":2," ...}
             {"id":3," ...}
              ...
             {"id":n," ...}]
我需要在列表中输入用户ID和金额,我在这里已经完成了:

var model = JsonConvert.DeserializeObject<TxnResponse>(rawJSON);
var elements = model.data;

List<List<int>> userTxns = new List<List<int>>(elements.Count);
List<int> record = null;

int userID = 0;
int userAmount = 0;

for (int row = 0; row < elements.Count; row++)
{
    userID = elements[row].userId;
    userAmount = Convert.ToInt32(Math.Floor(decimal.Parse(model.data[row].amount, System.Globalization.NumberStyles.Currency)));

    record = new List<int>();
    record.Add(userID);
    record.Add(userAmount);

    userTxns.Add(record);
}

return userTxns.GroupBy();
如何根据用户ID进行分组?谢谢。

这很有效

return userTxns.GroupBy(u => u[0], (key, values) => new List<int>
{
    key,
    values.Select(l => l[1]).Sum()
}).OrderBy(u => u[0]).ToList();

但是有16页的数据,我的REST调用只返回第一页。。。我将发布一个后续问题。

您的TxnResponse类的定义是什么?@BrianRogers-我试图将上面的评论格式化为代码。。。我感谢你的关心;如果您将上述文本复制并粘贴到记事本中并执行一些格式化,您将看到结构。我很感激你能提供的一切。谢谢。@BrianRogers-我能够越过我的模型进入我的问题。再次感谢你或任何能提供指导的人。谢谢。谢谢你发布你的模型。我不确定我是否完全理解你的例子。您是否正在尝试对每个用户ID的金额求和?例如,如果原始数据中用户1的数量为100和200,用户2的数量为400和500,那么您的预期输出是否是像[[1300]、[2900]]这样的整数的二维列表?或者您真的是指组,您仍然希望看到每个用户的所有单独金额?是的,将每个位置ID的每个用户ID的金额相加,如[[1300],[2900],…]
return userTxns.GroupBy(u => u[0], (key, values) => new List<int>
{
    key,
    values.Select(l => l[1]).Sum()
}).OrderBy(u => u[0]).ToList();