Как ограничить выбор предметов с помощью L2E / S? - PullRequest
2 голосов
/ 10 июня 2010

Этот код не разрешен

var errors = (from error in db.ELMAH_Error
         select new
         {
             error.Application,
             error.Host,
             error.Type,
             error.Source,
             error.Message,
             error.User,
             error.StatusCode,
             error.TimeUtc
         }).ToList();

return View(errors);

, поскольку это приводит к ошибке 'требует модель типа IEnumerable'. Следующий код, конечно, работает нормально, но выбирает все столбцы, некоторые из которых меня просто не интересуют:

var errors = (from error in db.ELMAH_Error
         select error).ToList();

return View(errors);

Я новичок в MVC2 + L2E, так что, возможно, я просто пока не думаю, что правильно, но это кажется нелогичным. Есть ли простой способ выбрать ограниченное количество столбцов, или это просто часть использования ORM?

1 Ответ

1 голос
/ 11 июня 2010

Это не проблема с L2E / L2S, а скорее со строго типизированными представлениями MVC.

Могу поспорить, что это не просто «требует модель типа IEnumerable», но «модель типа IEnumerable<Something>».Если у вас есть строго типизированное представление, привязанное к типу таблицы ошибок, то попытка передать ему анонимный тип, созданный вашим запросом (через select new {...}), приведет к несоответствию типов.

Вы можете либо создать новый тип, содержащий только те строки, которые вам нужны, и использовать его в качестве модели страницы просмотра, либо просто сделать полный выбор, а затем ограничить столбцы в коде ASP.

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