如何在 LINQ 中编写 for 循环

How to write a for loop in LINQ

有一个问题困扰着我。我正在读取一个包含坐标(经度和纬度)的文件。

文件内容:50.29264389999999,18.91857099999993;50.0347499,21.967057000000068;54.4547473,17.042384500000026;

我做了一个class坐标

internal class Coordinate
    {
        public double Longitude { get; set; }
        public double Latitude { get; set; }
        public Coordinate(double longitude,double latitude)
        {
            this.Longitude = longitude;
            this.Latitude = latitude;
        }
    }

然后我使用这段代码读取文件并列出它们。

List<Coordinate> cordinates = new List<Coordinate>();
var items = File.ReadAllText("../../../Files/input-01.txt").Split(new char[] { ',', ';' }).Select(double.Parse).ToList();
for(int i = 0; i < items.Count; i+=2)
{
    cordinates.Add(new Coordinate(items[i], items[i + 1]));
}            

程序可以运行,但是有没有办法在 LINQ 中编写这个 for 循环?

好的,让我们尝试对每个坐标进行一次选择

File.ReadAllText(filepath).Split(';')

为了阐明您的代码,请在您的坐标 class 中添加一个新函数,如下所示

public Coordinatex(string[] s){this.Longitude = double.Parse(s.First());this.Latitude = double.Parse(s.Last());}

然后将所有的items通过spliting和casting to double作为坐标对象,所以结果可能是这样的

File.ReadAllText(filepath).Split(';').Select(x => new Coordinatex(x.Split(',')));

希望这对你有用