2016-07-25 22 views
0

Ich brauche eine Liste von risePeriods zu bekommen, wo bitPos> 2.Linq, aus der Liste der Objekte, erstellen Liste von Eigenschaften auf einer anderen Eigenschaft Wert basiert

class Bit 
{   
    public int bitPos { get; set; }   
    public int risePeriod { get; set; } 
} 

List<Bit> dataBits; 

Ich versuchte

IEnumerable<int> rpList = dataBits 
    .Where(bit => bit.bitPos > 2) 
    .Select(bit => bit.risePeriod); 

und

sowie andere Möglichkeiten, aber jeder gibt die gesamte DataBits-Liste statt nur eine Liste von RisePeriods zurück. Das sollte einfach sein - oder?

Dank!

+0

Sind Sie sicher? Versuchen Sie: 'rpList = rpList.ToList()' oder (wenn Sie die ursprüngliche Liste ersetzen möchten): 'dataBits = rpList.ToList()' –

+0

Sind Sie sicher, dass Sie die Variable rpList und nicht dataBits für das Ergebnis betrachten? – Hogan

Antwort

1

Ich habe das versucht und es scheint gut zu funktionieren, wie ich vermutete, wie die Syntax und die Logik korrekt aussieht. Sie könnten versuchen, einen Anruf zu ToList hinzuzufügen, der es klarer macht, wenn Sie überprüfen, dass es sich um eine Liste von Ganzzahlen handelt. Wenn nicht, muss hier noch etwas anderes vor sich gehen. Hier ist der Code, den ich vorschlage:

IEnumerable<int> rpList = dataBits 
.Where(bit => bit.bitPos > 2) 
.Select(bit => bit.risePeriod) 
.ToList(); 
+0

Die .ToList() war die Antwort! –

Verwandte Themen