如何在linq中展平字典<string,List >并将键保留在结果中
你如何在linq中实现以下目标? 我觉得应该有一个Linq替代方案。
var foods = new Dictionary<string, List>(); foods.Add("Cake", new List() { "Sponge", "Gateux", "Tart" }); foods.Add("Pie", new List() { "Mud", "Apple" }); foods.Add("Roll", new List() { "Sausage" }); var result = new List<Tuple>(); foreach (var food in foods) { foreach (var detail in food.Value) { result.Add(new Tuple(food.Key, detail)); } } ie cake pie to cake, sponge cake, gateux pie, apple
谢谢
您可以使用SelectMany
扩展方法:
var result= foods.SelectMany(f=>f.Value.Select(s=>new Tuple(f.Key, s))) .ToList();
var result = (from food in foods from detail in food.Value select new Tuple(food.Key, detail)).ToList();
Linq是一个查询。 这就是’q’代表的意思。 您正在将项目添加到字典中。 试试这个
Dictionary> foods = new Dictionary>() { {"cake", new List () {"Sponge", "Gateux", "Tart"}}, {"Pie", new List () {"Mud", "Apple"}}, {"Roll", new List () {"Sausage"}}, };