簡體   English   中英

具有Linq到Sql擴展的DateTime的子串

[英]Substring of a DateTime with Linq to Sql extensions

我正在嘗試從我的表中獲取日期列表,其中包含一個名為StartTime的列中的許多DateTime值。 我的前任使用了以下SQL:

SELECT DISTINCT SUBSTRING(CONVERT(VARCHAR(50), StartTime, 120), 1, 10)

這導致表格中每行的“yyyy-MM-dd”格式的明確日期列表。 我正在嘗試通過執行以下操作將此轉換為Linq-to-SQL:

query.Select(o => o.StartTime.ToString("yyyy-MM-dd")).Distinct()

但是,這會導致錯誤“Method'System.String ToString(System.String)'沒有支持的SQL轉換。”

如何使用Linq-to-SQL進行子串/轉換?

謝謝!

您可以通過LINQ to SQL支持的DateTime屬性處理此問題,而不是依賴字符串處理:

var results = query.Select(o => o.StartTime.Date).Distinct();

如果要將其視為字符串,稍后可以使用LINQ to Objects轉換結果:

var stringResults = results.AsEnumerable().Select(d => d.ToString("yyyy-MM-dd"));

我會做:

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

LINQ to SQL支持DateTime.Date屬性(刪除子日期部分),因此日期格式化以外的所有內容都將在數據庫上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM