C#DataContext在比较日期时返回null

时间:2017-08-24 18:10:58

标签: c# linq

我正在创建一个基于数据库的桌面应用程序并遇到问题。实际上我是Linq的新手......

if (OP == "Delete")
            {
                tb = DB.TblPurchase.FirstOrDefault(e => e.PID.Equals(ID) || e.PItemName.Equals(ItemName) || e.PCategory.Equals(Category) || e.PDate.Equals(Date)); // returns null on comparing date

                DB.Delete(tb);

                return "Deleted";
            }
            else if (OP == "Search")
            {
                tb = DB.TblPurchase.FirstOrDefault(e => e.PID.Equals(ID) || e.PItemName.Equals(ItemName) || e.PCategory.Equals(Category) || e.PDate == Date);  // returns null on comparing date as well

                return tb;
            }

启动功能:

`public object AUDS_Purchase(string OP, int? ID = null, string ItemName = "",string Category = "", string Supplier = "", DateTime? Date = null, int ? Rate = null, int? Quantity = null, int? Total = null)
        {
            using(var DB = new MYDBDB())
            {
                TblPurchase tb = null;`

调用该函数:

`dynamic _ID = Cmb_Search_ItemID.SelectedIndex == -1 ? null : Cmb_Search_ItemID.SelectedValue;
            dynamic _ItemName = Cmb_Search_ItemName.SelectedIndex == -1 ? null : Cmb_Search_ItemName.SelectedValue.ToString();
            dynamic _ItemCategory = Cmb_Search_ItemCategory.SelectedIndex == -1 ? null : Cmb_Search_ItemCategory.SelectedValue.ToString();
            dynamic _Date = Search_Item_Date;

            dynamic res;

            if (Search_Item_Date.Checked == false)
            {
                if (_ID != null || _ItemName != null || _ItemCategory != null)
                {
                    res = tb.AUDS_Inventory("Search", Convert.ToInt32(_ID), _ItemName, _ItemCategory);

                    tb.ShowNewData(metroGrid1, res);
                }
                else
                {

                    MetroMessageBox.Show(this, "No Value Given\nSelect a value", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                res = tb.AUDS_Inventory("Search", Convert.ToInt32(_ID), _ItemName, _ItemCategory, Date:_Date);

                tb.ShowNewData(metroGrid1, res);
            }`

注意:我确定tb为null因为我使用了断点...

我的表格包含记录:Picture prove

数据库和表格一切正常......

这是我的第一篇文章BTW .. 在此先感谢:)

1 个答案:

答案 0 :(得分:1)

如果您在函数中提供的日期包含不同的时间,则可能是原因。正如我从您的数据库图片中看到的那样,您只是想比较日期。所以你可以尝试排除时间,它可能会起作用。你可以试试 你职能中的e.PDate.Date == Date.Date

相关问题