Linq to Entities - NotSupportedException - динамический тип - строка. Формат - PullRequest
3 голосов
/ 22 ноября 2010


Я делаю переход с Linq-to-SQL на Linq-to-Entities и в процессе конвертации натолкнулся на ошибку «LINQ to Entities не распознает метод» System.String Format (System.String, System.Object , System.Object) ', и этот метод не может быть преобразован в выражение хранилища ". Следующий код является виновником. Я понимаю, что это связано с генерацией динамических типов, которые я использую ниже. Как я могу все еще использовать динамический тип и использовать L2E?

var query = _db.Persons.Where(p => p.PersonId == PersonId);
if (query.Count() > 0)
{
  var data = query.Join(_db.Users, p => p.UserId, u => u.UserId, (p, u) => new
    {
      Id = p.PersonId,
      Name = string.Format("{0} {1}", p.FirstName, p.LastName),
      Phone = p.Phone,
      Email = u.Email
    }).Single();
  return data;
}

EDIT: Хорошо, чувствую себя немного глупо после того, как @Джон Хартсок показал мне простое решение ...
Что если я захочу сделать более сложные манипуляции со строками?

1 Ответ

5 голосов
/ 22 ноября 2010

Почему не это?

var query = _db.Persons.Where(p => p.PersonId == PersonId);
if (query.Count() > 0)
{
  var data = query.Join(_db.Users, p => p.UserId, u => u.UserId, (p, u) => new
    {
      Id = p.PersonId,
      Name = p.FirstName + " " + p.LastName,
      Phone = p.Phone,
      Email = u.Email
    }).Single();
  return data;
}

Вот хорошая ссылка для вас

http://msdn.microsoft.com/en-us/library/cc716715.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...