c# - DateTime 或 int 到 IQueryable 中的字符串?

标签 c# entity-framework entity-framework-6 iqueryable

如何在 IQueryable 中将 DateTime 或 int 转换为字符串?我需要做这样的事情,但没有 ToString(),它会抛出 System.NotSupportedException 异常:

IQueryable filteredEntities = myIQueryableCollection
    .Where(o => o.SomeDateTime.ToString().Contains(searchParameter) 
        || o.SomeInt.ToString().Contains(searchParameter));

对于 double 和小数,我使用 SqlFunctions.StringConvert 函数,但没有为 int 或 DateTime 重载。

请注意,我绝对需要在那里延迟执行。调用 ToList() 不是我正在处理的数据量的选项。

最佳答案

使用SqlFunctions.DateName:

data.Where(o => SqlFunctions.DateName("year", o.SomeDateTime).Contains(searchParameter) ||
                SqlFunctions.DateName("month", o.SomeDateTime).Contains(searchParameter) ||
                SqlFunctions.DateName("weekday", o.SomeDateTime).Contains(searchParameter))

可能需要搜索“年”/“月”/“星期几”以外的其他数据,具体取决于 searchParameter 的外观。

参见 MSDN .

关于c# - DateTime 或 int 到 IQueryable 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23475988/

相关文章:

java - 修复记录: Cell information from worksheet created

c# - `db.Database.SqlQuery<model>`使用后如何清除参数

testing - 将测试替身与 DbEntityEntry 和 DbPropertyEntry 一起使用

c# - 如何正确使用TransactionScope?

c# - 如何在 C# 中用 8 位表示 4 位二进制数?

entity-framework - 使用 Entity Framework 进行软删除(“历史记录”列)

c# - Entity Framework 6 DbSet AddRange vs IDbSet Add - AddRange 怎么能快这么多?

c# - 使用 First() 获取 LINQ 结果的第二项?

c# - Entity Framework 6 Code first 3级子表中的一对多关系

c# - IntelliTrace 独立收集器