c# - 具有 Linq to Sql 扩展的 DateTime 的子字符串

标签 c# sql-server linq linq-to-sql

我正在尝试从我的表中获取日期列表,该表在名为 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/

相关文章:

c# - 为什么 LINQ 不允许我对我的数据点之一进行排序?

c# - 使用 Contains 搜索部分 linq 文本

linq - 如何处理LINQ中没有结果?

c# - 验证 ICD-10-CM

c# - Debug模式 C# 应用程序

c# - 我的存储过程返回了一些东西,但是 sqlDataAdapter.Fill 将数据表留空

sql-server - t-sql 计算文本列中的唯一单词

.net - Elasticsearch和SQL Server进行全文搜索?

c# - 在 SQLite 中将 "String"存储为 "TEXT"而不是 "VarChar"- WP8

c# - 在通用类上添加继承类