Если вы используете .NET 3.5 или новее, вы можете использовать LINQ2Objects
var coordinateList = StopsList.Select(stop =>
new GeoCoordinate(Convert.ToDouble(stop.LatitudeField),
Convert.ToDouble(stop.LongitudeField))).ToList();
Если вы используете более старую версию .NET, вам нужно использовать явный цикл.
var coordinateList = new List<GeoCoordinate>();
foreach(var stop in StopsList)
{
coordinateList.Add(
new GeoCoordinate(Convert.ToDouble(stop.LatitudeField),
Convert.ToDouble(stop.LongitudeField)));
}
Редактировать
Если вы хотите объединить оба новых GeoCoordinate
с остановками, у вас есть несколько вариантов.
Либо создайте список с анонимным типом
var combinedList = StopsList.Select(stop =>
new {
s = stop,
coord = new GeoCoordinate(Convert.ToDouble(stop.LatitudeField),
Convert.ToDouble(stop.LongitudeField)),
}).ToList();
Вы также можете сделать то же самое с классом, который вы создаете, заменив new {
на new YourClass {
.
Вы также можете использовать метод Zip
используя оба приведенных выше списка
var combinedList = StopsList.Zip(coordinateList, Tuple.Create).ToList();
Это дает вам List<Tuple<Stop, GeoCoordinate>>
.
Обратите внимание, что большую часть времени вы можете пропустить .ToList()
, вы не получите List<T>
,но IEnumerable<T>
.В большинстве случаев это будет работать как List
, но вашей программе не нужно постоянно копировать все в списки.Обычно это немного эффективнее, и вам не нужно постоянно вводить .ToList()
.