获取由字典列表表示的表中每列的最大列长度
本文关键字:字典 列表 表示 获取 | 更新日期: 2023-09-27 18:26:51
我有一个表,表示为KeyValue
对的Dictionary
的List
。
列表中的每个字典表示表中的一行,并具有相同的键集(列名)。对于每个键,值都是当前行中的列值。
现在,我正试图编写一个优雅的lambda表达式来计算表中每列的最大列长度。
以下是我今天的做法:
// Get max column lengths
var maxColumnLengths = new Dictionary<string, int>();
foreach (var row in dics)
{
foreach (var col in row)
{
if (!maxColumnLengths.ContainsKey(col.Key))
{
maxColumnLengths.Add(col.Key, 0);
}
if (maxColumnLengths[col.Key] < col.Value.ToString().Length)
{
maxColumnLengths[col.Key] = col.Value.ToString().Length;
}
}
}
我正试图把它变成一个1/2行lambda表达式。有什么想法吗?
您可以在单个LINQ查询中完成:
var source = new List<Dictionary<string, object>>();
// (...)
var maxColumnLengths = source.SelectMany(x => x)
.GroupBy(x => x.Key)
.ToDictionary(g => g.Key,
g => g.Max(x => x.Value.ToString().Length));