我正在尝试使用LINQ:
SQL>> SELECT p_Id from items WHERE p_Name = 'R1'
LINQ>> var getpID = (from p in myDatabaseDataSet.Items
where p.p_Name == ptxtBox.Text
select p.p_Id).SingleOrDefault();
int p_Id = getpID;
但getpID总是返回0.出了什么问题?。
编辑:nvm语法正确。它总是返回0的原因是db中不存在该值。我在数据库中插入了txt框值,然后在刷新myDatabaseSet之前尝试再次调用它。所以我需要添加Fill()然后getpID才能读取值。
完整代码:
int c_Id = Convert.ToInt32(pcomboBox.SelectedValue);
int p_Id = 0;
string itemName = ptxtBox.Text;
this.Validate();
this.itemsBindingSource.EndEdit();
this.itemsTableAdapter.Insert(c_Id, itemName);
this.myDatabaseDataSet.AcceptChanges();
this.itemsTableAdapter.Fill(myDatabaseDataSet.Items);
var getpID = (from p in myDatabaseDataSet.Items
where p.p_Name == itemName
select p.p_Id).SingleOrDefault();
p_Id = getpID;
答案 0 :(得分:2)
而不是SingleOrDefault()使用FirstOrDefault()
如果生成的序列具有多个值SingleOrDefault()
将无法按您的意愿运行,FirstOrDefault()
将在何处起作用。
由于
答案 1 :(得分:1)