Я пытаюсь использовать уже существующий класс Building Expression, который я сделал при попытке сделать предложение select, но я не уверен, как прикрепить выражение к выражение дерева для Select, я пытался делать следующее:Вызывать выражение в выражении Select - LINQ to Entity Framework
var catalogs = matchingCatalogs.Select(c => new
{
c.CatalogID,
Name = EntitiesExpressionHelper.MakeTranslationExpression<Catalog>("Name", ApplicationContext.Instance.CurrentLanguageID).Compile().Invoke(c),
CategoryName = EntitiesExpressionHelper.MakeTranslationExpression<Category>("Name", ApplicationContext.Instance.CurrentLanguageID).Compile().Invoke(c.Category),
c.CategoryID,
c.StartDateUTC,
c.EndDateUTC
});
Но я, очевидно, получаю ошибку о том, что Entity Framework не может отобразить Invoke к методу SQL. Есть ли способ обойти это?
FYI, EntitiesExpressionHelper.MakeTranslationExpression <T> (имя строки, внутр LanguageID) эквивалентно:
x => x.Translations.Count(t => t.LanguageID == languageID) == 0 ? x.Translations.Count() > 0 ? x.Translations.FirstOrDefault().Name : "" : x.Translations.FirstOrDefault(t => t.LanguageID == languageID).Name
EDIT: Я понимаю, что мне нужно использовать ExpressionVisitor для достижения этой цели, но я не знаете, как использовать ExpressionVisitor для изменения MemberInitExpression, поэтому, если кто-нибудь знает, как это сделать, сообщите мне.
Вы когда-нибудь находили решение этого вопроса? – Rabbi