2012-07-17 20 views
5

DateTime özelliğiyle Billings adında bir varlık var. Tarihleri ​​benzersiz bir şekilde bulmalıyım, böylece onlardan geçip bir şeyler yapabileyim. Denedim:Linq ile Farklı Tarih

var DistinctYearMonthsDays = (from t in db.Billings 
           where t.DateTime.HasValue 
           select t.DateTime.Value.Date).Distinct(); 

foreach (var day in DistinctYearMonthsDays) 

ama (foreach üzerine) olsun:

belirtilen tip üyesi 'Tarih' LıNQ varlıkları desteklenmez. Yalnızca başlatıcılar, varlık üyeleri ve varlık gezinme özellikleri desteklenmektedir. Herhangi bir yardım çok takdir edilecektir

IEnumerable<DateTime> DistinctYearMonthsDays = db.Billings 
    .Select(p => new 
     {    
      p.DateTime.Value.Date.Year, 
      p.DateTime.Value.Date.Month, 
      p.DateTime.Value.Date.Day 
     }).Distinct() 
     .ToList() 
     .Select(x => new DateTime(x.Year,x.Month,x.Day)); 

:

arama yaptıktan sonra ben de başarılı olamadı aşağıdaki çalıştı.

+0

[Bu] [1] sayfasına bir göz attınız mı? [1]: http://stackoverflow.com/questions/5289338/linq-query-distinct-date –

cevap

8

Yerleşik EntityFunctions öğelerini kullanabilirsiniz. Sorgu olacaktı: EntityFunctions hakkında daha fazla bilgi için MSDN kontrol

var DistinctYearMonthsDays = (from t in db.Billings 
           where t.DateTime.HasValue 
           select EntityFunctions.TruncateTime(t.DateTime)).Distinct(); 

.

+0

çok senin istemi (ve iyi) tepki Jeff – user1531996

+0

Teşekkür için teşekkür ederiz! –