#entity-framework #linq-to-entities
#entity-framework #linq-to-entities
Вопрос:
Я использую MVC 3 и Entity Framework 4.1. Мне нужно вернуть представление, содержащее список строк с РАЗЛИЧНЫМИ значениями из таблицы базы данных моих документов. В SQL Server запрос, который работает, выглядит следующим образом:
SELECT DISTINCT(DocNum), Title, DocDate, DocFileName FROM Documents
Как мне сделать то же самое в MVC 3?
Ответ №1:
var result = (from d in cntx.Documents
select d).Distinct();
Комментарии:
1. Это также приводит к ошибке Имя cntx не существует в текущем контексте. Я думаю, это потому, что я использовал entity framework 4.1?
Ответ №2:
Попробуйте:
var query = context.Documents.Select(x => new
{
x.DocNum,
x.Title,
x.DocDate,
x.DocFileName
}).Distinct().ToList();
Distinct должен перебирать все возвращаемые столбцы, иначе вы можете получить одну DocNumber
или, например, несколько дат, и механизм запросов не будет знать, какую дату выбрать, потому DocNumber
что может быть возвращена только одна запись с заданным значением.
Комментарии:
1. Выдается сообщение об ошибке, в котором говорится, что контекст имени не существует в текущем контексте.
2. Я изменил контекст. Документы в db.Documents и скомпилированы. Теперь я получаю сообщение об ошибке, в котором говорится, что элемент модели, переданный в словарь, имеет тип ‘System. Коллекции. Generic.List
1[<>f__AnonymousType2
4[System. Строка, система. Строка, система. Значение с нулевым1[System.DateTime],System.String]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
значением 1[GUICE1. Модели. Document]’.