我试图使用LINQ做到这一点:帮助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的原因是数据库中不存在该值。我在数据库中插入了txt box值,然后在刷新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;
+1我不知道那种行为。感谢您的信息! – 2010-03-05 14:42:45
实际上,如果序列有多个值,SingleOrDefault将引发InvalidOperationException。 – 2010-03-05 14:51:26
@Ian:正确,谢谢! – 2010-03-06 14:48:23