从数据集中获取单个值的最佳方式是什么?
答
// setup sql command and sql connection etc first...
int count = (int) cmd.ExecuteScalar();
答
最好的办法是不要写在数据集中的单个值。
,但如果你不能避免它:
try
{
//if the value is coming back as string
int value1 = Int32.Parse(ds.Tables[0].Rows[0][0].ToString());
//if the value is already an integer
int value2 = (int)ds.Tables[0].Rows[0][0];
}
catch(Exception ex)
{
throw new Exception("You do not have even a single value in the DataSet or its not an integer!", ex);
}
答
if (ds.Tables[0].Rows.Count > 0) {
int i = Convert.ToInt32(ds.Tables[0].Rows[0]["colname"]);
}
+0
虽然这段代码可能会回答这个问题,但提供关于为什么和/或代码如何回答这个问题的附加上下文会提高它的长期价值。 –
答
,你可以这样做:
dt = ds.Tables["TableName"];
Convert.ToInt32(dt.Rows[rowNumber]["ColumnName"].ToString());
答
你可以做这样的...
int myVar =
Convert.ToInt32(dsMyDataSet.Tables["MyTable"].Rows[intRowPos]["MyColumn"].Tostring());
+0
没有从对象转换为decimal或int –
答
见C#3.0'扩展方法'的新特性您可以为任何类定义您自己的扩展方法。 例如:
namespace MyEx;
public static class MyExtensions
{
public static object SingleValue(this DataSet ds)
{
return ds.Tables[0].Rows[0][0];
}
}
后,您可以使用它:
using MyEx;
public class Class1
{
public void Test()
{
DataSet ds = new DataSet();
object value = ds.SingleValue();
}
}
这比使用一个数据集就是我想要做的更好,好:) – Steve
+1,好赶上! – sll
+1:Linq to SQL是另一个类似的选择。 –