我有一个搜索按钮和文本字段,用户可以在其中插入付款日期,按下该按钮将在Gridview行中显示搜索结果。我有一个类似的代码搜索数据库,但字符串值。这是我的代码:
public List<PaymentsHeader> GetPaymentsMadeForSearch(string keyword)
{
CosisEntities db = new CosisEntities();
IQueryable<PaymentsHeader> query = db.PaymentsHeaders.OrderByDescending(m => m.PaymentDate);
if (!string.IsNullOrEmpty(keyword))
{
keyword = keyword.ToLower();
query = query.Where(m =>
(!string.IsNullOrEmpty(m.VendorID) && m.VendorID.ToLower().Contains(keyword))
|| (!string.IsNullOrEmpty(m.CheckNumber) && m.CheckNumber.ToLower().Contains(keyword))
|| (!string.IsNullOrEmpty(m.Notes) && m.Notes.ToLower().Contains(keyword))
|| m.PaymentsDetails.Select(j => j.Description).Contains(keyword)
);
}
return query.ToList();
}
所以,在这段代码中,我使用字符串字段搜索表格,但我的要求是使用付款日期搜索表格。所以,为此,我需要转换字段
String Keyword
进入日期时间。但不幸的是我不知道该怎么做。任何人都可以帮我修改上面的代码以满足要求。谢谢。
答案 0 :(得分:0)
DateTime date;
bool isDate = DateTime.TryParse(keyword, out date);
DateTime? date2 = isDate ? (DateTime?)date : null;
然后
|| m.PaymentDate == date2
在sql中,null
总是与任何内容不同(甚至来自null
,所以null != null
),所以如果keyword
不是日期,请date2
1}}您将拥有null
,并且检查将始终返回false
(但请注意,这可能会在EF的未来发生变化:http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions/suggestions/1015361-incorrect-handling-of-null-variables-in-where-cl?ref=title%23suggestion-1015361)