I have search string input, then I need to check if DateTime field contains that string. Here's the code
System.Linq.Expressions.Expression<Func<FileConversion, bool>> predicate =
GetPredicateForFileConversion(sSearch);
//fetch and sort results
List<FileConversion> conversions = new List<FileConversion>();
if (asc)
{
var pages2skip = (iDisplayStart);
var sqlRequest = new System.Data.SqlClient.SqlCommand();
sqlRequest.CommandText = "SELECT * FROM FileConversions JOIN "
conversions = (from fc in _dataContext.FileConversions
join cs in _dataContext.ConversionStatuses on fc.Id equals cs.FileConversionId
join rts in _dataContext.ReturnSettings on fc.ReturnSettingId equals rts.Id
join r in _dataContext.Returns on rts.ReturnId equals r.Id
join e in _dataContext.Entities on r.EntityId equals e.Id
join a in _dataContext.Accounts on e.AccountId equals a.Id
where ((fc.CurrentStatusCode == ConversionStatusCode.Processing) || (fc.CurrentStatusCode == ConversionStatusCode.Ready) || (fc.CurrentStatusCode == ConversionStatusCode.Error) ||
(fc.CurrentStatusCode == ConversionStatusCode.ValidationErrors) || (fc.CurrentStatusCode == ConversionStatusCode.Pending))
select fc).Where(predicate).OrderBy(sort).Distinct().Skip(pages2skip).Take(iDisplayLength).ToList();
}
Here's a predicate:
private System.Linq.Expressions.Expression<Func<FileConversion, bool>> GetPredicateForFileConversion(String sSearch)
{
System.Linq.Expressions.Expression<Func<FileConversion, bool>> predicate = null;
if (sSearch != null && !Convert.ToString(sSearch).Equals(""))
{
predicate = row => row.FileName.Contains(sSearch)
|| row.ReturnSetting.Return.Entity.Account.Name.Contains(sSearch) || Convert.ToString(row.CreationDate).Contains(sSearch)
|| row.ConversionStatuses.Any(s => s.UserName.Contains(sSearch));
}
else
{
predicate = row => true;
}
return predicate;
}
Here's a question - how to convert DateTime to string in linq to make search in one request? I tried ToString(), DateTime.TryParse() and something else, but it won't work