【发布时间】:2014-05-30 21:42:31
【问题描述】:
假设我们有一个_2DLine 对象列表。
public class _2DLine
{
public double X1 { get; set; }
public double Y1 { get; set; }
public double X2 { get; set; }
public double Y2 { get; set; }
}
var L1 = new _2DLine { X1 = 0, Y1 = 0, X2 = 100, Y2 = 100 };
var L2 = new _2DLine { X1 = 50, Y1 = 50, X2 = 200, Y2 = 200 };
var L3 = new _2DLine { X1 = 0, Y1 = 0, X2 = 200, Y2 = 200};
var L4 = new _2DLine { X1 = 100, Y1 = 100, X2 = 50, Y2 = 50};
var MyLines = new List<_2DLine>
{
L1,
L2,
L3,
L4
}
如您所见,有些线条有共同点。 我们如何将这个列表中的所有点提取到字典中,以便对于特定的_2DPoint(X,Y),我们将获得进入或退出该点的行的列表。
var MyPoints = new Dictionary<_2DPoint, List<_2DLine>>();
public class _2DPoint
{
public double X { get; set; }
public double Y { get; set; }
}
最终的结果是这样的:
Key | Value
-----------------------------------
_2DPoint(0,0) | { L1, L3 }
_2DPoint(100,100) | { L1, L4 }
_2DPoint(50,50) | { L2, L4 }
_2DPoint(200,200) | { L2, L3 }
【问题讨论】:
-
这似乎是一个简单的要求。是什么阻碍了您的解决方案?我在这里没有看到任何问题。
-
@user414076 我很困惑如何创建该字典。
-
@Vahid:指定该过程的哪个步骤是困难的。创建字典?指定字典的内容?过滤输入集以确定字典中的内容?
-
是代码给你带来了问题,还是算法?如果让我推断,我认为你没有一个好的算法。但也许是代码。我不知道,因为你还没有问过问题。
-
@Vahid 我更新了一些关于查询和改进代码建议的 cmets 的答案 :)
标签: c# linq list dictionary