Linq

27/01/2009 - 16:23 von Peter Forstmeier | Report spam
Hallo zusammen,
ich habe folgende Collection
public class ReportItemCollection : Collection<BaseReportItem>

und versuche nun von BaseReportItem abgeleitete Objecte mittels LINQ aus
dieser Collection zu filtern bekomme das aber nicht hin.

Kann mir hier jemadn einen rat geben.

Danke

Peter
 

Lesen sie die antworten

#1 Frank Dzaebel
27/01/2009 - 21:13 | Warnen spam
Hallo Peter,

ich habe folgende Collection
public class ReportItemCollection : Collection<BaseReportItem>
und versuche nun von BaseReportItem abgeleitete Objecte mittels LINQ
aus dieser Collection zu filtern bekomme das aber nicht hin.



Hier ein Beispiel:

private void Form1_Load(object sender, EventArgs e)
{
ReportItemCollection col = new ReportItemCollection();
for (int i = 0; i < 5; i++)
col.Add(new SpecialBaseReportItem(i));
for (int i = 0; i < 5; i++)
col.Add(new NormalBaseReportItem(i));

var res from r in col where r is SpecialBaseReportItem
select r.Zahl;

StringBuilder msg= new StringBuilder();
foreach (int s in res) msg.Append(s + ", ");
MessageBox.Show(msg.ToString());
}

class BaseReportItem
{
public BaseReportItem()
{
}
public int Zahl{get;set;}
}

class SpecialBaseReportItem : BaseReportItem
{
public SpecialBaseReportItem(int zahl)
{
this.Zahl = zahl-5;
this.SpecialNumber = 42;
}
public int SpecialNumber{get;set;}
}

class NormalBaseReportItem : BaseReportItem
{
public NormalBaseReportItem(int zahl)
{
this.Zahl = zahl;
this.NormalNumber = 33;
}
public int NormalNumber { get; set; }
}

class ReportItemCollection : Collection<BaseReportItem>
{
public ReportItemCollection()
{
this.Alter = 42;
}
public int Alter { get; set; }
}

______________

Du müsstest sonst etwas genauer beschreiben,
welchen ReportItems Du gefiltert haben möchtest.
Am besten in dem obigen Beispiel, weil dann
etwas reproduzierbares da ist.
Weitere Infos u.a.:

[LINQ]
http://dzaebel.net/LINQ.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen