Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - casten von Linq-Query Ergebnissen


MHA - Fr 23.10.09 12:33
Titel: casten von Linq-Query Ergebnissen
Hallo!

Angenommen, es existieren folgende Klassen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
public class A
{
  public bool prop1 { get; set; }
  public string prop2 { get; set; }
  ...
}

public class B
{
  private List<A> _alleA;
   
  // liefert alle Instanzen der Klasse A, für die gilt A.prop1 == param
  public List<A> GetAllA(bool param)
  {
    [b]IEnumerable<A>[/b] result = _alleA.Where(obj => obj.prop1 == param).Select(obj => obj);  
    [b]return ????[/b]
  }
   ...
}


Wie bekomme ich das Ergebnis der Linq-Abfrage am elegantesten in das richtige Format?
Oder ist es doch einfacher einfach ein Delegate


C#-Quelltext
1:
_alleA.FindAll(delegate(A obj) { return (obj.prop1 == param); });                    


zu benutzen?

Hoffe ihr könnt mir helfen?!

Gruß
Marc


UGrohne - Fr 23.10.09 14:23

Das Select am Ende kannst Du weg lassen, Where liefert in IEnumerable<A> zurück. Willst Du daraus eine List generieren, musst Du eine neue List mittels new List<A>(result) erzeugen, allerdings bringt Dir das nur etwas, wenn Du später wirklich Änderungen vornehmen willst. Ansonsten reicht auch das IEnumerable.


MHA - Fr 23.10.09 14:32

user profile iconUGrohne hat folgendes geschrieben Zum zitierten Posting springen:
Das Select am Ende kannst Du weg lassen, Where liefert in IEnumerable<A> zurück.


Danke für den Tip!

Die Lösung für mein Problem ist .ToList()! Aber manchmal sieht man halt den Wald vor lauter Bäumen nicht!


UGrohne - Fr 23.10.09 16:32

user profile iconMHA hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconUGrohne hat folgendes geschrieben Zum zitierten Posting springen:
Das Select am Ende kannst Du weg lassen, Where liefert in IEnumerable<A> zurück.


Danke für den Tip!

Die Lösung für mein Problem ist .ToList()! Aber manchmal sieht man halt den Wald vor lauter Bäumen nicht!

Auch eine Idee :).