首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#数据区间合并有关问题

2012-04-25 
C#数据区间合并问题最近在做项目的时候遇到一个这样的问题:listpoint类型中存入了很多区间,Point.x存入

C#数据区间合并问题
最近在做项目的时候遇到一个这样的问题:

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

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

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

List<point>中,请问各位大侠有什么好的办法没?

[解决办法]

C# code
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);        }    }} 

热点排行