Как сделать groupby с помощью list<list<int> и return list<list<int> В C#?
Мои данные начинаются с объекта 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<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();
Результат должен выглядеть примерно так при печати на экране (консоль.WriteLine(Строка.Join ("\n", список.Выберите(x => String.Join(" ", x))));):
1 1000
2 2000
3 3000
4 4000
Без Group By, если объект JSON имеет 10 элементов данных, у меня есть 10 записей (userId, amount).
Модель:
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 по идентификатору пользователя? Спасибо.
Что я уже пробовал:
return userTxns.GroupBy(userID); return userTxns.GroupBy(u => userID);
но получите "аргументы типа для метода не могут быть выведены из использования..." или "не могут неявно преобразовать тип...".
Richard Deeming
Основываясь на образцовых данных, ваш List<List<int>>
это уже обеспечит результат, который вы сказали, что хотите.
Что вы пытаетесь сгруппировать, и какой результат вы ожидаете?
Member 12338931
Я пытаюсь сгруппировать по идентификатору пользователя в объекте userTxns, который содержит списки идентификаторов пользователей и сумм.
Выходные данные должны группировать идентификаторы пользователей и суммировать суммы каждого пользователя следующим образом:
1 1000
2 2000
3 3000
4 4000
где первый столбец-это идентификатор пользователя, а второй - суммированные суммы каждого соответствующего пользователя.