Я пытаюсь что-то переписать с python на c #, мне удалось воссоздать словари, но у меня возникли проблемы с пониманием словаря в c #.Вот код Python, который я хотел бы воссоздать в C #
distances={1:.02,30:.001,1000:.001}
minSearch=(min(distances.items(), key=lambda x:x[1]))
Это словарь, который я имею в C #
Dictionary<int, double> distDict = new Dictionary<int, double>();
Спасибо за ответ здесь он реализован
List<MapPoint> list = new List<MapPoint>();
list.Add(pointDict[Convert.ToInt32(startOid)]);
while (pointDict.Count()>1)
{
var shape = pointDict[Convert.ToInt32(startOid)];
pointDict.Remove(Convert.ToInt32(startOid));
var X = shape.X;
var Y = shape.Y;
var Z = shape.Z;
foreach(KeyValuePair<int,MapPoint> point in pointDict)
{
var X2 = point.Value.X;
var Y2 = point.Value.Y;
var Z2 = point.Value.Z;
var squaredZDist = Math.Pow((Z - Z2), 2);
var squaredDist = Math.Pow(Math.Sqrt(Math.Pow(X - X2, 2) + Math.Pow(Y - Y2, 2)),2);
var threeDSquaredDist = Math.Sqrt(squaredDist + squaredZDist);
distDict[point.Key] = threeDSquaredDist;
}
var minValue = distDict.Min(x => x.Value);
var minPair = distDict
.Where(x => x.Value == minValue)
.First();
startOid = minPair.Key;
list.Add(pointDict[minPair.Key]);
distDict.Clear();
}
Polyline polyline = PolylineBuilder.CreatePolyline(list);
var pipeLayer = mapView.Map.Layers.OfType<FeatureLayer>()
.Where(x=>x.Name == "PIPELINE")
.First();
MessageBox.Show(pipeLayer.Name.ToString());
var createFeatures = new EditOperation();
createFeatures.Name = "Create Polyline";
createFeatures.Create(pipeLayer, polyline);
createFeatures.Execute();