获取由字典列表表示的表中每列的最大列长度

本文关键字:字典 列表 表示 获取 | 更新日期: 2023-09-27 18:26:51

我有一个表,表示为KeyValue对的DictionaryList

列表中的每个字典表示表中的一行,并具有相同的键集(列名)。对于每个键,值都是当前行中的列值。

现在,我正试图编写一个优雅的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));