Привет, У меня возникли проблемы с деревом выражений с использованием метода расширения .Any().Linq Дерево выражений Any() issue
Вот мой код:
IQueryable<Book> querableBooks = Books.Values.AsQueryable<Book>();
ParameterExpression pe = Expression.Parameter(typeof(Book), "book");
MemberExpression props = Expression.Property(pe, "properties");
ParameterExpression propList = Expression.Parameter(typeof(List<BookProperty>), "properties");
var _test = Expression.Lambda<Func<List<BookProperty>, bool>>(operation, new ParameterExpression[] { propList });
var _Any = Expression.Call(typeof(Enumerable), "any", new Type[] { typeof(BookProperty) }, new Expression[] { propList });
Expression Lamba = Expression.Lambda(_Any, _props);
_test возвращает {свойства => ((bookProperty.type.key == "нижнее белье") И (bookProperty.value == "1"))}
_Any возвращает {properties.Any()}
возвращает Lambda {book.properties => properties.Any()}
класс Книга выглядит так:
public class Book : IBook
{
public int id { get; set; }
//Removed for clarity
public List<BookProperty> properties { get; set; }
}
класс BookProperty:
public class BookProperty
{
public BookProperty()
{
value = "0";
}
public int id { get; set; }
public int bookId { get; set; }
public Book book { get; set; }
public int typeId { get; set; }
public BookPropertyType type { get; set; }
public string value { get; set; }
}
И BookPropertyType класс:
public class BookPropertyType
{
public int id { get; set; }
public string groupe { get; set; }
public string key { get; set; }
public string label { get; set; }
public int order { get; set; }
public string editorType { get; set; }
public string unite { get; set; }
}
Так что я рядом с ним, но я не знаю, как слить все это правильно, чтобы иметь запрос такой вот
{book.propertie.Any (bookProperty => bookProperty.type.key == "нижнее белье") И (bookProperty.value == "1")}
Спасибо за помощь.
Было бы полезно, если вы включите 'Book' и Классы BookProperty. –
@IvanStoev Я добавил классы. Спасибо, – Julien
Вы хотите получить подмножество книг Queryable на основе типа свойства и значения свойства? Если да, то о чем: queryableBooks.Where (book => book.properties.Any (property => property.type.key == "lingerie" && property.value == "1")) – Brino