У меня есть эти объекты:Linq запрос с фигурными скобками для анонимного тела действия/функций
public class Parent: AllDependant
{
/*Properties goes here*/
}
public class Children: AllDependant
{
/*Properties goes here*/
}
Тогда я allDependants
переменных с TYPEOF List<AllDependant>
, который будет держать некоторые из детей и родители entitiy в смеси.
Позже, я хочу, чтобы выбрать один из них и сделать что-то вроде этого:
var selectedDependantInfos = allDependants
.Select(dependant =>
{
if (dependant is Parent)
{
var parent = dependant as Parent;
return new { Name = parent.Name, SomeSpecialInfo = parent.ParentInfo };
}
else
{
var child = dependant as Children;
return new { Name = child.Name, SomeSpecialInfo = child.ChildInfo }
}
});
Примечания специфического свойства для детей и родителей требует от меня, чтобы бросить и получить собственность на новую модель для отображения пользовательского интерфейса, который не является предметом озабоченности. Я не могу поместить специальное свойство в базовый класс AllDependant, потому что мне нужно реорганизовать имя свойства на так много файлов, включая * .ascx, что является неприятным. Однако это было сделано с использованием метода расширения Linq Select
выше, но я просто думаю об этом:
Вопрос: Как я могу сделать то же самое в Linq Query?
Это даст ошибку на select
ключевого слова и фигурные скобки:
var selectedDependantInfos = from dependant in allDependants
select
{
/* the same if statement goes here */
}
Что вы думаете, что вы получите, изменив его в синтаксис Linq? – ChrisWue
Ошибка в том, что вам не хватает ключевого слова 'new'. 'select new {..}'. – alexn
@ChrisWue, не меняя мышление, как делать тело функции в запросе Linq, как мы можем сделать тело функции в лямбда. – CallMeLaNN