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

时间:2013-08-07 07:55:03

标签: c# linq dictionary

我有一个表格List Dictionary KeyValue对。{/ p>

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

现在,我正在尝试编写一个优雅的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表达式。任何想法?

1 个答案:

答案 0 :(得分:2)

您可以在单个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));