如何在 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/