Masaüstümden StartTime adında bir sütunda bir dizi DateTime değeri içeren tarihlerin listesini almaya çalışıyorum. Bu tablodaki her satır için "yyyy-AA-gg" biçiminde tarihlerin ayrı listede sonuçlanırLinq to Sql uzantıları içeren bir DateTime'ın Substring'i
SELECT DISTINCT SUBSTRING(CONVERT(VARCHAR(50), StartTime, 120), 1, 10)
: My selefi aşağıdaki SQL kullanıyordu. Ben yaparak Linq-to-SQL nasıl çeviririm çalışıyorum şu:
query.Select(o => o.StartTime.ToString("yyyy-MM-dd")).Distinct()
Ancak bu hatayla sonuçlanır "Yöntem 'System.string ToString (System.String)' SQL için desteklenen bir çeviri var ."
Bunu nasıl yapabilirim Linq-to-SQL kullanarak Substring/Convert?
Teşekkürler!
query.Select(o => o.StartTime.Date)
.Distinct() // Runs on the database
.AsEnumerable() // Convert to local sequence
.Select(date => date.ToString("yyyy-MM-dd")) // Runs on the client
DateTime.Date
mülkiyet (alt tarih kısmını çıkarır) LINQ SQL için desteklenir, böylece tarih-biçimlendirme dışındaki her şey veritabanı üzerinde çalışacak:
Bu, tarih bölümünde değil, tam tarih-saat değerinde farklı olurdu. –
@Jon: Hayır, yalnızca Tarih bölümünde farklı olurdu. Select yan tümcesinde DateTime.Date ile eşleşmeye dikkat edin. – Ani
Evet, sadece onu yanlış okumuştum. –