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

Sof*_*tor 4 c# entity-framework iqueryable entity-framework-6

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

IQueryable filteredEntities = myIQueryableCollection
    .Where(o => o.SomeDateTime.ToString().Contains(searchParameter) 
        || o.SomeInt.ToString().Contains(searchParameter));
Run Code Online (Sandbox Code Playgroud)

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

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

hai*_*770 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))
Run Code Online (Sandbox Code Playgroud)

根据searchParameter看起来的样子,可能需要搜索"年"/"月"/"工作日"以外的其他数据.

请参阅MSDN.