我有一个表格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表达式。任何想法?
答案 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));