Если я хочу, чтобы запустить что-то вроде этогоLINQ где предложение работает против отображенного объекта
BLL.Person person = (BLL.Person)repository.Single(item => item.Id == Id);
вниз в моем одном методе я хотел бы сделать что-то вроде этого:
public Resource Single(Expression<Func<BLL.Resource, bool>> where)
{
Resource resource = AsQueryable().FirstOrDefault(where);
return resource;
}
protected IQueryable<BLL.Resource> AsQueryable()
{
// I need to use the where clause on an object called DAL.Resource
throw new NotImplementedException();
}
Объект DAL.Resource идентичен BLL.Resource, однако BLL-копия не знает о сохранении. Я могу сопоставить вещи с помощью automapper, не проблема, чтобы вернуть коллекцию того, что я хочу, однако мне нужно, чтобы предложение where запускало agaisnt DAL not BLL ...
Это должно быть как-то! Любые идеи были бы хорошы.
Привет, спасибо за ваш ответ, я начал терять всякую надежду в этом. Я посмотрю на деревья выражений и вернусь к вам, если у вас есть какие-либо ссылки или пример, я был бы благодарен. – Tablet
@ 'Shahin' - попробуйте посмотреть класс' System.Linq.Expressions.ExpressionVisitor' в 'System.Core'. Это абстрактный класс для переписывания выражений. Используя Reflector.NET, я мог бы найти три производные реализации, чтобы надеяться дать вам представление о том, как их использовать. Вам нужно будет использовать Reflector, чтобы сбрасывать исходный код, потому что он является внутренним. Удачи! – Enigmativity