日期时间或int到iquerable中的字符串

本文关键字:字符串 iquerable 时间 int 日期 | 更新日期: 2023-09-27 18:01:50

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

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

对于双精度和十进制,我使用SqlFunctions.StringConvert函数,但是对于int或DateTime没有重载。

请注意,这里我绝对需要延迟执行。呼叫ToList()不是我正在使用的数据量的选项。

日期时间或int到iquerable中的字符串

使用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。

MSDN似乎建议使用以下扩展方法:

Enumerable.Cast<TResult>

http://msdn.microsoft.com/en-us/library/bb341406 (v = vs.100) . aspx