从数据集中获取单个值的最佳方式是什么?

问题描述:

我有一个数据集应该只有一个值,什么是最好的方式获得单个值出来,并成为一个整数?从数据集中获取单个值的最佳方式是什么?

SqlCommand.ExecuteScalar

// setup sql command and sql connection etc first... 
int count = (int) cmd.ExecuteScalar(); 
+1

这比使用一个数据集就是我想要做的更好,好:) – Steve

+0

+1,好赶上! – sll

+0

+1:Linq to SQL是另一个类似的选择。 –

最好的办法是不要写在数据集中的单个值。

,但如果你不能避免它:

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(); 
    } 
}