有没有更好的方法来使用LINQ分割此字符串?

Nul*_*nce 9 c# linq

我有一些经度\纬度坐标在一个字符串中聚集在一起,我想分成经度\纬度对.感谢stackoverflow,我已经能够想出一些将它拆分成多维字符串数组的linq.有没有办法将字符串直接拆分为接受经度纬度与字符串数组的对象然后创建对象?

string segment = "51.54398, -0.27585;51.55175, -0.29631;51.56233, -0.30369;51.57035, -0.30856;51.58157, -0.31672;51.59233, -0.3354"

string[][] array = segment.Split(';').Select(s => s.Split(',')).ToArray();
foreach (string[] pair in array)
{
//create object here
}
Run Code Online (Sandbox Code Playgroud)

Meh*_*ari 23

你很亲密 这样的事情可能会有所帮助:

var pairSequence = segment.Split(';')
        .Select(s => s.Split(','))
        .Select(a => new { Lat = double.Parse(a[0]), Long = double.Parse(a[1]) });
Run Code Online (Sandbox Code Playgroud)


dtb*_*dtb 6

假设你有一个Coordinate带有public Coordinate(double x, double y)构造函数的类,你可以这样做:

Coordinate[] result = segment
    .Split(';')
    .Select(s => s.Split(','))
    .Select(a => new Coordinate(x: double.Parse(a[0], NumberStyles.Number),
                                y: double.Parse(a[1], NumberStyles.Number))
    .ToArray();
Run Code Online (Sandbox Code Playgroud)

或同等地

var query = from item in segment.Split(';')
            let parts = item.Split(',')
            let x = double.Parse(parts[0], NumberStyles.Number)
            let y = double.Parse(parts[1], NumberStyles.Number)
            select new Coordinate(x, y);

Coordinate[] result = query.ToArray();
Run Code Online (Sandbox Code Playgroud)