我创建了一个连接SQLserver 2014和VisalStudio2013(.NET 4,5),Visal C#的模型。在VB中我有两种形式,在SQL中有一个带记录的表。
在Winform中,我使用了“textbox”,它的类型是 nvarchar (10),用于在SQL数据库中搜索。
**但是在第二个Winform中我想使用“datetimepicker”在SQL数据库中搜索,其中列的类型是 date **
我的代码必须改变这个seach.Becouse给我 :错误7运算符'=='无法应用于'System.DateTime?'类型的操作数和'int
如果必须白色新代码,应该是什么?
这是第一种搜索形式的代码
textKkKod1.Focus();
loadSearchData();
int kochani;
try
{
kochani = Convert.ToInt32(this.textKkKod1.Text);
}
catch
{
MessageBox.Show("Error 404");
return;
}
string kodNaKonduktor = this.textKkKod1.Text;
var koch = db.Koches.Where(k => k.CODEK == kochani).FirstOrDefault();
if (koch == null)
return;
this.textKkKod1.Text = Convert.ToString(koch.CODEK);
//this.textKkKochaniData1.Value = Convert.ToDateTime(koch.DATER);
this.textKkRazpiska1.Text = koch.Razpiska;
}
private void loadSearchData()
{
int kochani;
try
{
kochani = Convert.ToInt32(this.textKkKod1.Text);
}
catch
{
MessageBox.Show("Eror 404");
return;
}
kochBindingSource.DataSource = db.Koches.Where(k => k.CODEK == kochani).ToList();
this.gridKochaniKonduktor1.DataSource = this.kochBindingSource.DataSource;
}
答案 0 :(得分:2)
您遇到的错误是说您正在尝试将日期与整数进行比较。您无法比较两种不同类型的对象。
根据问题中的代码,这是由行:
引起的var koch = db.Koches.Where(k => k.CODEK == kochani).FirstOrDefault();
此处也会出现同样的错误:
kochBindingSource.DataSource = db.Koches.Where(k => k.CODEK == kochani).ToList();
我们知道kochani
是一个整数,这意味着CODEK
必须是日期时间。 (除非我错过了,否则你没有告诉我们CODEK
如何宣布/初始化/分配。)
您需要将CODEK
转换为integer
:(我怀疑您实际上可以将日期存储为整数,最好使用long
)
long codekAsLong = long.Parse(CODEK.ToString("yyyyMMddHHmmss"));
或将kochani
转换为datetime
以解决此问题。
DateTime kochaniAsDT = new DateTime(1970, 1, 1).AddMilliseconds(kochani);
//This assumes kochani represents milliseconds
- 我无法告诉你哪个,因为我不知道使用此代码的上下文。 (我正在努力使用变量名称,因为它......)