如何将DateTime或int转换为IQueryable内的字符串?我需要做类似这样的事情,但没有ToString()
,这会引发System.NotSupportedException
异常:
IQueryable filteredEntities = myIQueryableCollection
.Where(o => o.SomeDateTime.ToString().Contains(searchParameter)
|| o.SomeInt.ToString().Contains(searchParameter));
对于double和decimal,我使用SqlFunctions.StringConvert
函数,但int或DateTime没有重载。
请注意,我绝对需要延期执行。调用ToList()
不是我正在处理的数据量的选项。
答案 0 :(得分:6)
使用 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。
答案 1 :(得分:-3)
MSDN似乎建议使用以下扩展方法:
Enumerable.Cast<TResult>
http://msdn.microsoft.com/en-us/library/bb341406(v=vs.100).ASPX