Хорошо, давайте разделим это на LINQ to Objects и LINQ to Entities
В LINQ to Object вышеприведенный сбой, потому что компилятор не знает, что такое имя свойства, если вы измените его на следующее:
var mySelection = from a in myContainer
where a=somecondition
select new {
a.prop1,
prop2 = myMethod(a.prop2)
};
Это будет работать в LINQ to Objects
Однако Entity Framework не сможет преобразовать вызов метода (если только это не функция, известная EF, например, определяемая моделью функция, EdmMethods или SqlMethods), поэтому вам придется переписать этот запрос следующим образом:
var mySelection = from a in myContainer
where a=somecondition
select new {
a.prop1,
a.prop2
};
var myResults = from a in mySelection.AsEnumerable()
select new {a.prop1, prop2 = myMethod(a.prop2)};
Это извлекает из базы данных все, что вам нужно, и затем использование вызова AsEnumerable () превращает вызов myMethod в нечто, обрабатываемое LINQ to Objects, а не LINQ to Entities
Надеюсь, это поможет
Alex