【发布时间】:2009-09-03 10:22:08
【问题描述】:
我有这门课
public class Line
{
public string ConnectionsIndex{get;set;}
}
我的 Linq 问题是我必须汇总这些行
var l1 = new Line{ ConnectionsIndex="01,02"};
var l2 = new Line{ ConnectionsIndex="02,03"};
var l3 = new Line{ ConnectionsIndex="01,03"};
进入这个
var l4 = new Line{ ConnectionsIndex="01,02,03"};
可以用 Linq 做吗?
详情:
当我添加收藏中的其他物品时,事情变得更加复杂(至少对我而言)。
var l5 = new Line (ConnectionsIndex = "02,04");
var l6 = new Line (ConnectionsIndex = "03,06");
因为不存在与 03,04 , 01,04 , 01,06 和 02,06 对的其他行
不知道我解释的好不好……
在实践中,假设您拥有多边形的所有点,我想通过给出每个多边形的所有点之间的连接列表来从查询中获取所有项目的一行。
(我的列表包含多个多边形)
如果没有连接到所有其他点,则不应将一个点包含在结果中。
这是我的列表内容示例:
ConnectionsIndex="166,171"
ConnectionsIndex="166,174"
ConnectionsIndex="166,333"
ConnectionsIndex="169,170"
ConnectionsIndex="171,175"
ConnectionsIndex="171,334"
ConnectionsIndex="167,174"
ConnectionsIndex="172,174"
ConnectionsIndex="174,335"
ConnectionsIndex="177,341"
ConnectionsIndex="180,200"
ConnectionsIndex="181,183"
ConnectionsIndex="182,199"
ConnectionsIndex="184,185"
ConnectionsIndex="186,188"
ConnectionsIndex="189,192"
ConnectionsIndex="190,230"
ConnectionsIndex="191,375"
在此列表中,例如,您有一个介于 166、171 和 334 之间的三角形
更多细节:
var group = lines.Where(x => x.ConnectionsIndex.Split(',').Contains(line.ConnectionsIndex.Split(',')[0]) || X。 ConnectionsIndex.Split(',').Contains(line.ConnectionsIndex.Split(',')[1])).ToList(); if (group.Count()==1) { 直线。添加(线); } 别的 { //这里我有一个“组”,其中包含点之间的所有线。我想获得不同的点 }
【问题讨论】:
-
嗯...恐怕我还是不明白你在做什么。您能否给出一些输入集合和所需输出的示例(3 个或 4 个)?
-
我已经尝试了一些方法,但是对于您的示例数据,它给出了“166,171,174,333,175,334,167,172,335”。您需要确定确切的多边形吗?
-
我同意需要更多细节。您的值是否是“x,y”坐标,并且您试图计算出所有连接点以形成一条线?
-
我的多边形示例是为了简化我的域...我在一家能源分销公司工作,每对数字都是两个断路器之间的连接。一个多边形是所有涉及的断路器之间的“星形”连接。但我正在将这对(旧数据库)转换为新形式..