2013-11-30 5 views
0

У меня есть этот 'метод':Как создать AsSomeClass в Linq?

private static readonly Expression<Func<EntityClass, SomeClass>> AsSomeClass = 
     x => new SomeClass 
     { 

     }; 

, который позволяет мне делать:

_ctx.EntityClasses.Where(e => e.SomeProperty == someValue).Select(AsSomeClass); 

, который возвращает IQueryable<SomeClass>, который является большим!

Хотя делать это мне было интересно, есть какой-то способ сделать это так, что я могу сделать:

_ctx.EntityClasses.Where(e => e.SomeProperty == someValue).AsSomeClass() вместо оператора выбора.

Есть ли способ сделать это таким образом?

ответ

6

Вы можете сделать это путем AsSomeClassextension method на IEnumerable<EntityClass> (или на IQueryable<EntityClass>, а также, но в данном случае, не купить вам что-нибудь), но пожалуйста, не.

.Select(ConversionFunction) полностью понятен читателю; .AsSomeClass() довольно непрозрачный: он может делать почти все. Не могли бы вы сказать, может ли, например, отображать содержимое последовательности или проектировать их или даже если он изменяет тип самой последовательности?

+2

Я принимаю ваше предложение и буду продолжать использовать, как подход к функции преобразования. Я не эксперт, поэтому я очень ценю это. –