我試圖使用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