C# 将datatable对象转换为int

C# 将datatable对象转换为int,c#,sql,type-conversion,int,C#,Sql,Type Conversion,Int,我有一个foreach循环,我试图将从包含id的sql中获取的对象分配给列表模型,其中该项必须是int foreach (DataRow item in dtbProduct.Rows) { PaymentsList.Add(new Payments() { PaymentID = item["p_ID"], 在这种情况下,我得到语法错误 无法简单地将objecto

我有一个foreach循环,我试图将从包含id的sql中获取的对象分配给列表模型,其中该项必须是int

 foreach (DataRow item in dtbProduct.Rows)
            {
                PaymentsList.Add(new Payments()
                {
                    PaymentID = item["p_ID"],
在这种情况下,我得到语法错误

无法简单地将objecto转换为int

但是如果我写

PaymentID = int.Parse(item["p_ID"].ToString()),
项目运行,但我收到运行时错误

System.FormatException:'输入字符串的格式不正确。'


您可以使用int.TryParse-read代替int.Parse

或者如果这是一个长期的尝试,长期


研究.net中的数据类型到sql server的映射,以确定您需要的内容

如果它是sql中的
Int
,则可能存在一些
null
值,这些值在转换时出错。在转换为
int
之前,请尝试检查
null


尝试一下这个

项目[“p\u ID”]的值是多少。ToString()?显示项目[“p\u ID”]的值。ToString()什么数据类型是p\u ID?因为它可能用作数据库中的主键,所以我假设这是一个int64?在这种情况下,使用int64.Parse()您是否尝试过将.ToInt64(项[“p_Id”])转换为?但语法说明无法将long隐式转换为int64。这对我很有效,可能是我的选择给了我null,这导致了问题。
PaymentID = Convert.ToInt32( string.IsNullOrEmpty(item["p_ID"].ToString()) ? "0" : item["p_ID"].ToString()); // provided 0 if null