私はこのクラスを持っています
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 を持つ他の行が存在しないため
うまく説明できたかわかりませんが…
実際には、ポリゴンのすべてのポイントがあると想像してください。各ポリゴンのすべてのポイント間の接続のリストを提供することにより、クエリからすべてのアイテムの行を取得したいと考えています。
(私のリストには複数のポリゴンが含まれています)
他のすべてに接続されていない場合、1 つのポイントを結果に含めないでください。
これは私のリストの内容の例です:
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) { Straight_lines.Add(line); } else { //ここに、ポイント間のすべての行を含む「グループ」があります..個別のポイントを取得したい }