我有以下对象集合列表。

column1:
Point data type
x=10,y=20

我已经使用 Point 过滤了 linq ofType<Point> 列。
Var XYLocations = Source.Select(g => g.ofType<Point>).ToList();

现在 XYLocations 包含重复项。

从该列表中,我想使用 linq 将列表转换为 dictionary<Point,List<int>>,其中点是键,相应的匹配行索引充当值。

最佳答案

尝试这样的事情:

var xyLocations = //initialization
var dictionary = xyLocations
                     .Select((p, i) => new Tuple<Point, int>(p, i))
                     .GroupBy(tp => tp.Item1, tp => tp.Item2)
                     .ToDictionary(gr => gr.Key, gr => gr.ToList());

如果你没有元组,你可以使用匿名类型:
var dictionary = xyLocations
                     .Select((p, i) => new {Item1 = p, Item2 = i})
                     .GroupBy(tp => tp.Item1, tp => tp.Item2)
                     .ToDictionary(gr => gr.Key, gr => gr.ToList());

关于c# - 使用 LINQ 将对象集合转换为字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7495104/

10-12 01:57