如何在C#中的示例中从DataTable获取特定列值时如何解决转换无效?

cyr*_*500 1 c# linq datatable

我的数据表回来任何有2列的行包含产品ID和产品名称.

DB上的表中的产品ID是nvarchar(150)

产品名称是nvarchar(150)

示例:(在dt_ProductName中)

product id                        product name
----------                        ------------
  1                                 a 300
  3                                 2 200
Run Code Online (Sandbox Code Playgroud)

**当文本等于"a 300"时,返回产品Model_ID = 1

我想在值列产品名称=文本时获取产品ID.(对于sql =从产品名称= @productname的tbl-product中选择产品ID)

产品ID`只能有一个值.text是字符串,由用户电报输入

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();
Run Code Online (Sandbox Code Playgroud)

指定演员表无效.

使用此代码时:

 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;
     }
 }
Run Code Online (Sandbox Code Playgroud)

为了不工作,只检查计数和xx但不检查是否?!

Sef*_*efe 5

您不能将字符串转换为小数(decimal)DR["ProductID"].这是一个类型转换,字符串小数不支持.

你必须使用Convert.ToDecimal:

Convert.ToDecimal(DR["ProductID"])
Run Code Online (Sandbox Code Playgroud)