在IQueryable里面的DateTime或int到字符串?

时间:2014-05-05 15:15:29

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

如何将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()不是我正在处理的数据量的选项。

2 个答案:

答案 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