2016-06-20 2 views
0

Ich habe eine List<Coord> die Segment, startX, startY, endX, endY.Suchen Liste für einen Artikel und erhalten Sie den gesamten Eintrag mit LINQ

Frage genannt wird viel, wenn Einträge mit Elementen enthält: wenn ich ein bestimmtes Segment haben, würde ich die List suchen gerne für es, und wenn ich es finde, kopieren Sie den gesamten Eintrag einschließlich segment, startx, starty .. in eine neue Liste. Wenn möglich, möchte ich LINQ Ausdruck verwenden.

Klasse, die die Einträge ergänzt:

public class Coord 
{ 
    public string Segment { get; set; } 
    public double startX { get; set; } 
    public double startY { get; set; } 
    public double endX { get; set; } 
    public double endY { get; set; } 
    public string Naziv { get; set; } 
} 

Also, wenn ich einen bestimmten Teildisziplinen Wert haben, möchte ich die List<Coord>, danach suchen, und wenn ich es finden, kopieren Sie die entsprechenden Koordinaten und Segment (der gesamte Index) zu einem neuen List.

+1

wir wissen nicht, was du meinst. Eine Liste der Dinge, was "Einträge", was "Elemente", was ist ein "Segment". Zeigen Sie ein einfaches Beispiel – pm100

+1

Dies ist nicht einfach ohne ein wenig Code, der zeigt, wie ein Element oder ein Eintrag aussehen. – dasblinkenlight

+0

@ pm100 hat den Code hinzugefügt. – Romy

Antwort

2

gegeben eine Coord needle und eine List<Coord> haystack, würden Sie tun var myNewList = haystack.Where(c -> c.Segment == needle.segment).ToList()

+0

Einfach und elegant, arbeitete wie ein Charme. Vielen Dank! – Romy

0

Sie können den folgenden Code verwenden:

string lookedSegment = ... 
List<Coord> newList = originalList.Where((c) => c.Segment == lookedSegment).ToList(); 

Above Code würde eine neue Liste mit aktuellen Einträgen auf sie erstellen, wenn Sie neue Einträge benötigen würden Sie sie mit folgendem Code klonen:

List<Coord> newList = originalList.Where((c) => c.Segment = lookedSegment) 
            .Select((c) => new Coord { 
            Segment = c.Segment, 
            startX = c.startX, 
            startY = c.startY, 
            endX = c.endX, 
            endY = c.endY, 
            Naziv = c.Naziv 
            }) 
            .ToList(); 
Verwandte Themen