In meinem Beispiel habe ich Bibliotheken und Bücher .. Ich muss Bibliotheken zurückgeben, die ein bestimmtes Buch haben. Ich kann das gut mit Standard LINQ Where (.Any()), aber mit Schwierigkeiten mit Dynamic Linq tun.Dynamic Linq - Auswählen von übergeordneten Objekten aus untergeordneten Eigenschaften
Unten ist Beispielcode. Mein Fehler tritt bei Objekt 14 auf.
protected void Page_Load(object sender, EventArgs e)
{
List<Library> libraries = new List<Library>();
libraries.Add(new Library() { Name = "New York" }); // NO BOOKS FOR NY
List<Book> books = new List<Book>();
books.Add(new Book() { Title = "Colors" });
books.Add(new Book() { Title = "Gardening for Noobs" });
libraries.Add(new Library() {Name = "Boston", Books = books });
// GET NEW YORK LIBRARY
List<Library> l1 = libraries.Where(x => x.Name == "New York").ToList(); // STANDARD
List<Library> l2 = libraries.AsQueryable().Where("Name = \"New York\"").ToList(); // DLINQ
// GET LIBRARIES WITH BOOK = COLORS
List<Library> l3 = libraries.Where(x => x.Books != null && x.Books.Any(a => a.Title == "Colors")).ToList(); // STANDARD
List<Library> l4 = libraries.AsQueryable().Where("Books.any(Title = \"Colors\"").ToList(); // ERROR: No property or field 'Title' exists in type 'Library'
}
public class Library
{
private string _name;
private List<Book> _books;
public string Name
{
get { return _name; }
set { _name = value; }
}
public List<Book> Books
{
get { return _books; }
set { _books = value; }
}
}
public class Book
{
private string _title;
public string Title
{
get { return _title; }
set { _title = value; }
}
}
Vielen Dank, aber ich bekomme immer noch den gleichen Fehler "Keine Eigenschaft oder Feld 'Titel' existiert im Typ 'Bibliothek'". – Paul
@Paul versuche mein Update zu überprüfen –
Perfekt! Meine Referenzdatei für System.Linq.Dynamic war nicht korrekt. Ich habe das neueste von NuGet aktualisiert und das Problem behoben. – Paul