我正在创建一个基于数据库的桌面应用程序并遇到问题。实际上我是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 .. 在此先感谢:)
答案 0 :(得分:1)
如果您在函数中提供的日期包含不同的时间,则可能是原因。正如我从您的数据库图片中看到的那样,您只是想比较日期。所以你可以尝试排除时间,它可能会起作用。你可以试试
你职能中的e.PDate.Date == Date.Date
。