MVC 3 Entity Framework 4.1 получить список уникальных строк данных

#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]’.