我正在尝试从我的表中获取日期列表,该表在名为 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()
然而,这会导致错误“方法‘System.String ToString(System.String)’没有支持的 SQL 转换。”
如何使用 Linq-to-SQL 执行此子字符串/转换?
谢谢!
最佳答案
您可以通过 DateTime properties supported in LINQ to SQL 处理此问题,而不是依赖于字符串处理。 :
var results = query.Select(o => o.StartTime.Date).Distinct();
如果你想把它看成一个字符串,稍后,你可以使用 LINQ to Objects 来转换结果:
var stringResults = results.AsEnumerable().Select(d => d.ToString("yyyy-MM-dd"));
关于c# - 具有 Linq to Sql 扩展的 DateTime 的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977922/