我的数据表卷土重来,任何包含 2 列的行都包含产品 ID 和产品名称。
数据库表中的产品 ID 是 nvarchar(150)
产品名称是 nvarchar(150)
示例:(在 dt_ProductName 中)
product id product name
---------- ------------
1 a 300
3 2 200
** 当文本等于“a 300”时返回产品 Model_ID= 1
我想在值列产品名称 = 文本时获取产品 ID。(for sql = select product id from tbl-product where product name = @productname)
product id` 必须只有一个值。文本为字符串,由用户电报输入
string Model_Names = text.tostring();
Decimal Model_ID = (from DataRow DR in dt_ProductName.Rows
where (string)DR["ProductName"]== Model_Names
select (decimal) DR["ProductID"]).FirstOrDefault();
Specified cast is not valid.
使用此代码时:
for (int xx = 0; xx > dt_ProductName.Rows.Count;xx++ )
{
if (dt_ProductName.Rows[xx][1].ToString() == Model_Names)
{
Model_ID = (decimal)dt_ProductName.Rows[xx][0];
}
else
{
continue;
}
}
如果不行,只检查count和xx,不检查if?!
您不能使用 (decimal)DR["ProductID"]
将字符串转换为十进制。这是类型转换,字符串或十进制不支持。
你必须使用Convert.ToDecimal
:
Convert.ToDecimal(DR["ProductID"])
我是一名优秀的程序员,十分优秀!