【发布时间】:2015-06-24 15:16:06
【问题描述】:
想象一下,我有一个数据库,其中包含一个或多个表,其中包含一个或多个列的多个索引...
我想创建并填充一个Dictionary<string, Dictionary<string, List<string>>>,这样我就可以获得特定表的所有索引或表和索引的特定组合的所有列。
这里是带有表名、索引名和列名的元组(示例数据)
List<Tuple<string, string, string>> tuples = new List<Tuple<string, string, string>>();
tuples.Add(Tuple.Create("T1", "I1", "C1"));
tuples.Add(Tuple.Create("T1", "I1", "C2"));
tuples.Add(Tuple.Create("T1", "I1", "C3"));
tuples.Add(Tuple.Create("T1", "I2", "C1"));
tuples.Add(Tuple.Create("T2", "I1", "C1"));
tuples.Add(Tuple.Create("T3", "I1", "C1"));
tuples.Add(Tuple.Create("T3", "I1", "C2"));
tuples.Add(Tuple.Create("T3", "I2", "C1"));
tuples.Add(Tuple.Create("T3", "I2", "C2"));
tuples.Add(Tuple.Create("T3", "I2", "C3"));
我能想到的最好的是:
Dictionary<string, Dictionary<string, List<string>>> perTI = new Dictionary<string, Dictionary<string, List<string>>>();
foreach (var group in tuples.GroupBy(x => Tuple.Create(x.Item1, x.Item2)))
{
perTI[group.Key.Item1] = new Dictionary<string, List<string>>(){ { group.Key.Item2, group.Select(g => g.Item3).ToList() } };
}
有谁知道用 1 条 LINQ 语句来做这件事的方法吗?
【问题讨论】:
-
如果这行得通,我不明白你为什么需要改进它。无论如何,这都是题外话。
-
我投票结束这个问题,因为它属于codereview.stackexchange.com
-
什么样的“linq”? LINQ to XML?
-
@JohnSaunders:由于 OP 使用
List<Tuple<string, string, string>>作为源,它似乎是 Linq-To-Objects。 -
@RayCW:这意味着主题:stackoverflow.com/help/on-topic这是要求改进工作代码,应该在codereview.com而不是在stackoverflow:meta.stackoverflow.com/questions/253975/…
标签: c# linq linq-to-objects