Это продолжение предыдущего вопроса ( Как назначить JSON элементов для двумерного массива в L oop), который я задал. Мои данные начинаются с 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," ...}]
Мне нужно получить идентификатор пользователя и сумму в List<List<int>>
, что я сделал здесь:
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();
результат должен выглядеть следующим образом при выводе на экран (Console.WriteLine(String.Join("\n", list.Select(x => String.Join(" ", x))));
):
1 1000
2 2000
3 3000
4 4000
Без группировки По, если объект JSON имеет 10 элементов данных, у меня есть 10 идентификаторов пользователей, количество записей. Я пытался return userTxns.GroupBy(userID);
и return userTxns.GroupBy(u => userID);
, но получить "аргументы типа для метода не могут быть выведены из использования ..." или "Не удается неявно преобразовать тип ...".
Модель:
public class TxnResponse
{
public string page { get; set; }
public int per_page { get; set; }
public int total { get; set; }
public int total_pages { get; set; }
public List<data> data { get; set; }
}
public class data
{
public int id { get; set; }
public int userId { get; set; }
public string userName { get; set; }
public object timestamp { get; set; }
public string txnType { get; set; }
public string amount { get; set; }
public Location location { get; set; }
public string ip { get; set; }
}
public class Location
{
public int LocationID { get; set; }
public string Address { get; set; }
public string City { get; set; }
public int ZipCode { get; set; }
}
Как сделать GroupBy по идентификатору пользователя? Спасибо.