就这种数据,已经可以在winform里读取了,如何将经度和纬度单独进行排序,并将最大最小值取出来。
界面上放一个按钮,代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Q778681
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofn = new OpenFileDialog();
if (ofn.ShowDialog() == DialogResult.OK)
{
var data = File.ReadAllLines(ofn.FileName).Skip(1).Where(x => x != "")
.Select(x => Regex.Replace(x, "\\s+", "\t").Split('\t').Take(3).Select(y => double.Parse(y)).ToArray());
var lamax = data.Select(x => x[0]).Max();
var lamin = data.Select(x => x[0]).Min();
var lngmax = data.Select(x => x[1]).Max();
var lngmin = data.Select(x => x[1]).Min();
MessageBox.Show(string.Format("lamax={0}, lamin={1}, lngmax={2}, lngmin={3}", lamax, lamin, lngmax, lngmin));
}
}
}
}
List<List<int>> data = new List<List<int>>();
data.Add(new List<int> { 1, 8, 3 });
data.Add(new List<int> { 7, 5, 9 });
data.Add(new List<int> { 4, 2, 6 });
//按纬度排序
data.Sort((p,q)=> {
if (p[0] == q[0])
return 0;
return p[0] < q[0] ? -1 : 1;
});
//输出最小和最大的纬度
Console.WriteLine($"MIN:{data.First()[0]} MAX:{data.Last()[0]}");
//按经度排序
data.Sort((p, q) => {
if (p[1] == q[1])
return 0;
return p[1] < q[1] ? -1 : 1;
});
//输出最小和最大的经度
Console.WriteLine($"MIN:{data.First()[1]} MAX:{data.Last()[1]}");
用Linq对数据进行排序就可以了
先用SteamReader一行一行读出来,然后再排序