C#数据区间合并问题

XJAVASunjava 2012-04-22 11:26:44
最近在做项目的时候遇到一个这样的问题:

list<point>类型中存入了很多区间,Point.x存入的是开始位置,Point.Y存入的是结束位置。list<point>中存入了很多这样的

点,例如1--4,3---8,9--20,17--25.

现在的问题是要把这些重合的段落从新合并成一个区间,例如上边四个区间应该合并为:1--8和9--25两个区间从新添加到

List<point>中,请问各位大侠有什么好的办法没?
...全文
235 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2012-04-22
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Point> data = new List<Point>()
{
new Point() { X = 1, Y = 4 },
new Point() { X = 3, Y = 8 },
new Point() { X = 9, Y = 20 },
new Point() { X = 17, Y = 25 }
};
data.ForEach(x =>
{
if (data.Where(y => y != x).Any(y => y.X <= x.Y && y.Y >= x.X))
{
var desc = data.Where(y => y != x).First(y => y.X <= x.Y && y.Y >= x.X);
x.X = desc.X > x.X ? x.X : desc.X;
x.Y = desc.Y > x.Y ? desc.Y : x.Y;
}
});
data = data.GroupBy(x => new { x.X, x.Y }).Select(x => new Point() { X = x.Key.X, Y = x.Key.Y }).ToList();
foreach (var item in data)
{
Console.WriteLine(item);
}
}
}
class Point
{
public int X { get; set; }
public int Y { get; set; }
public override string ToString()
{
return string.Format("X = {0}, Y = {1}.", X, Y);
}
}
}


X = 1, Y = 8.
X = 9, Y = 25.
Press any key to continue . . .
XJAVASunjava 2012-04-22
  • 打赏
  • 举报
回复
膜拜大侠,谢谢了...

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧