我在C# List对象中有以下格式的数据:
Id Value 1 5 2 3 3 -2 1 27 2 0 3 1 1 -4
字符串我想创建一个三维列表从这些数据格式如下:
Id Count TotalValue 1 3 28 2 2 3 3 2 -1
型我不确定LINQ中使用的语法来实现这一点,有人可以帮助吗?
dddzy1tm1#
你可以用这个
var result = data.GroupBy(item => item.Id) .Select(group => new { Id = group.Key, Count = group.Count(), TotalValue = group.Sum(item => item.Value) }) .ToList();
字符串
yhived7q2#
首先,您需要使用GroupBy,然后创建一个新的对象,该对象接受每个组并计算(Count和Sum)需要从它们中获得的值:DotNetFiddle Example的
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { var source = new List<(int Id, int Value)> { (1, 5), (2, 3), (3, -2), (1, 27), (2, 0), (3, 1), (1, -4), }; var computed = source .GroupBy(x => x.Id) .Select(x => new {Id = x.Key, Count = x.Count(), TotalValue = x.Sum(s => s.Value)}) .ToList(); foreach(var value in computed) { Console.WriteLine($"{value.Id} {value.Count} {value.TotalValue}"); } } }
字符串输出量:1328二二三32 - 1
hmae6n7t3#
让我用一个元组来表示一个对象
var x = new List<(int Id, int Value)>(); var y = x.GroupBy(x => x.Id).Select(_ => new { Id = _.Key, Count = _.Count(), TotalValue = _.Sum(i => i.Value) });
3条答案
按热度按时间dddzy1tm1#
你可以用这个
字符串
yhived7q2#
首先,您需要使用GroupBy,然后创建一个新的对象,该对象接受每个组并计算(Count和Sum)需要从它们中获得的值:
DotNetFiddle Example的
字符串
输出量:
1328
二二三
32 - 1
hmae6n7t3#
让我用一个元组来表示一个对象
字符串