2016-06-22 4 views
0

Lasst uns sagen, dass wir die List<Item> data haben, und die Item Klasse definiert ist wie folgt:eine Liste <T> mit T ein anonymer Typ LINQ ist die Verwendung in C#

public class Item 
{ 
    public double Station { get; set; } 
    public double Area { get; set; } 

    ... 
    // other properties present in the class 

} 

Nun, wie können wir ein neues List<T> heraus erstellen von List<Item>, so dass T anonymer Typ ist, der nur und double Area als seine Eigenschaften hat.

Ich weiß, wie alle Station und Bereich Werte in eine List<double> data2 extrahieren, aber was ich will, ist anders.

var data2 = data 
    .SelectMany(x => new[] { x.Station, x.Area }) 
    .ToList(); 
+1

Das ist wirklich eine schlechte Idee. Fügen Sie diese Eigenschaften besser in eine Schnittstelle ein und erstellen Sie dann eine Liste dieser Schnittstelle. – CSharpie

+0

@Charpie Danke CSharpie für die Idee, aber ich brauche dieses eine Mal in einem bestimmten Algorithmus, so dass die Verwendung einer Schnittstelle scheint wie ein Overkill! – Vahid

Antwort

7

Ich denke, was Sie brauchen, ist ...

var data2 = data 
    .Select(x => new { x.Station, x.Area }) 
    .ToList(); 

Sie brauchen nicht SelectMany hier, in der Regel wird es verwendet, um die Hierarchie zu glätten.

+0

Vielen Dank. Manchmal bist du so in Programmierung eingetaucht, dass du das Offensichtliche vermisst! – Vahid

+1

Stimmt, passiert in vollem Terminkalender :-) –

Verwandte Themen