2011-02-17 2 views
13

Я хочу добавить от к приведенному ниже коду. Я не могу определить точный синтаксис. Заранее спасибо.Linq to Entities Distinct Clause

var testdates = (from o in db.FMCSA_ME_TEST_DATA 
       orderby o.DATE 
       select new 
       { 
        RequestDate = o.DATE 
       }); 

ответ

16

Используйте метод Distinct() расширения.

Обратите внимание, что Distinct() может отрицать существующие orderby (я заметил это в LINQ to SQL), поэтому вы можете использовать метод OrderBy().

var testdates = (from o in db.FMCSA_ME_TEST_DATA 
       select new 
       { 
        RequestDate = o.DATE 
       }).Distinct().OrderBy(x => x.RequestDate); 
+0

Вы уверены, что Distinct() отрицаете заказ? Я не вижу этого поведения (работает аналогичный запрос), и был бы очень удивлен, если бы я сделал –

+0

@Adam. Я столкнулся с проблемой OrderBy/Distinct с LINQ to SQL, но это может быть не проблема для других поставщиков LINQ , См. Http://programminglinq.com/blogs/marcorusso/archive/2008/07/20/use-of-distinct-and-orderby-in-linq.aspx – Greg

+0

Wow - не знал об этой ошибке. Я надеюсь, что это исправлено в EF4, несмотря на то, что это не должно влиять на этот * запрос. +1 для публикации, хотя. –

4
var testdates = (from o in db.FMCSA_ME_TEST_DATA 
       orderby o.DATE 
       select new 
       { 
        RequestDate = o.DATE 
       }).Distinct(); 

Хитрость заключается в том, чтобы обернуть ваш запрос в скобках, так что вы можете вызвать отчетливый метод, который вы уже сделали, так что все, что вам было нужно, чтобы лавировать на вызов метода в конце.