[英]how to convert datatable to list<string> and then compare it with a Textbox value?
我有一個DataTable->“ CheckProduct(String id) ” ,其中String ID是發票ID,用於獲取該發票的產品ID
現在,我想將其與“文本框”值進行比較。
我已經嘗試了一個代碼。
我的數據邏輯:
public DataTable CheckProduct(String id)
{
DataTable dt = new DataTable();
SqlConnection sqlconnection;
sqlconnection = new SqlConnection(@" Database Connection String");
sqlconnection.Open();
SqlCommand cmd = new SqlCommand("checkproduct", sqlconnection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@inv_id", SqlDbType.VarChar).Value = int.Parse(id);
DataSet dtset = new DataSet();
SqlDataAdapter adpt = new SqlDataAdapter(cmd);
adpt.Fill(dtset);
dt = dtset.Tables[0];
return dt;
}
我的業務邏輯:
public List<String> CheckProduct(String id)
{
SPDatalogic sp = new SPDatalogic(); //datalogic class
DataTable dt = new DataTable() ;
dt = sp.CheckProduct(id);
List<String> list = new List<String>();
SPBusinesslogic ab = new SPBusinesslogic(); //businesslogic class
String pro;
pro =ab.CheckProduct(id).ToString();
list.Add(pro);
return list;
}
我的演示層:
string id = invoice_no_textbox.Text;
SPBusinesslogic ab = new SPBusinesslogic(); //businesslogic class
List<String> id_list = new List<String>();
id_list = ab.CheckProduct(id); //passing invoice_no as string id
if (id_list.Any(x => x.Equals(invoice_no_textbox.Text)))
{
MessageBox.Show("the product already exist");
}
假設您的發票ID的字段名稱稱為“ invoice_id”,我將把CheckProduct的代碼重寫為
public List<String> CheckProduct(String id)
{
SPDatalogic sp = new SPDatalogic(); //datalogic class
DataTable dt = sp.CheckProduct(id);
List<String> list = new List<String>();
foreach (DataRow dr in dt.Rows)
{
list.Add(dr["invoice_id"].ToString());
}
return list;
}
在您的代碼中,您遞歸調用CheckProduct方法,再次傳遞發票ID,這似乎不是退出循環的方法。 取而代之的是,從上一次對SPDatalogic類的調用中已經知道了發票的產品列表。 所以您只需要將它們添加到列表中
同樣,在DataLogic類中,參數的聲明中可能存在錯誤。 如果@inv_id為整數類型,則不要將參數聲明為VarChar
cmd.Parameters.Add("@inv_id", SqlDbType.Int).Value = int.Parse(id);
最后一點,我不明白為什么您的ID明顯是數字時為什么要使用List<string>
。 這將導致類型從字符串繼續轉換為int,反之亦然。 您應該檢索List<int>
並僅轉換文本框的輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.