0

我有一个搜索按钮和文本字段,用户可以在其中插入付款日期,然后按下按钮将在 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

进入日期时间。但不幸的是,我不知道该怎么做。谁能帮我修改上面的代码以满足要求。谢谢你。

4

1 回答 1

0
DateTime date;
bool isDate = DateTime.TryParse(keyword, out date);

DateTime? date2 = isDate ? (DateTime?)date : null;

接着

|| m.PaymentDate == date2

在 sql 中,null总是不同于任何东西(甚至从null, so null != null),所以如果keyword不是日期,date2你将拥有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=标题%23suggestion-1015361 )

于 2013-08-30T07:20:09.653 回答