Linq To Sql: преобразование добавленной стоимости - PullRequest
0 голосов
/ 09 января 2010

Рассмотрим следующее выражение:

from p in db.People
    select new Person {
        Name = p.Name, Age = p.Age, Gender = p.Gender.ToEnum<Gender>()
};

Работает до точки вызова метода расширения static T ToEnum<T>(this string value); как положено.
Я понимаю, почему существует Не знаю, как перевести строкуперечислить ошибка.
Вопрос: как мне обойти это без введения другого класса?
Я имею в виду, что я мог бы определить класс PersonWithGenderAsText и затем перевести это в Person класс, но я чувствую, что должен быть более легкий путь.
В частности, я не против назвать .ToList() результатом вышеприведенного выражения, но я не могу понять остальное.

1 Ответ

3 голосов
/ 09 января 2010

Просто используйте анонимный внутренний тип, чтобы получить только те биты, которые вам нужны из базы данных, используйте AsEnumerable, чтобы переключиться в режим «в процессе», и , затем , вы можете выполнить преобразование в объект Person:

var query = db.People
              .Select(p => new { p.Name, p.Age, p.Gender } )
              .AsEnumerable()
              .Select(p => new Person { Name = p.Name,
                                        Age = p.Age,
                                        Gender = p.Gender.ToEnum<Gender>() } );

Если в db.People больше нет данных, вы можете еще больше упростить это:

var query = db.People
              .AsEnumerable()
              .Select(p => new Person { Name = p.Name,
                                        Age = p.Age,
                                        Gender = p.Gender.ToEnum<Gender>() } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...