こんにちは私は.Any()拡張メソッドを使って式ツリーに問題があります。Linq式ツリーAny()問題
ここに私のコードは次のとおり
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"))}
:{properties.Any()}ラムダ戻り{book.properties => properties.Any()}
Bookクラスは次のようである
_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.txt.key == "lingerie")と(bookProperty.value == "1")}
ご協力ありがとうございます。私が正しく理解していれば
あなたは 'Book'とを含む場合には参考になります'BookProperty'クラスです。 –
@IvanStoev私はクラスを追加しました。 – Julien
あなたはプロパティの種類とプロパティの値に基づいてクエリ可能な書籍のサブセットを取得したいですか?もしそうなら:queryableBooks.Where(book => book.properties.Any(property => property.type.key == "lingerie" && property.value == "1")) – Brino