从数据集获取值到变量
本文关键字:变量 获取 数据集 | 更新日期: 2023-09-27 18:07:15
我有以下返回数据集的方法。我正在使用。net 2.0
DataSet ds = GetAllRecords();
我想从特定行的每列获取值,并将其绑定到一个变量。如何才能做到这一点?
当前该方法返回表中的所有行,我必须根据ID找到特定的行。
但是,如果不可能的话,我可以和
一起来。DataSet ds = GetSpecificRecord(id);
但是我仍然需要从每个列中获取值并将其绑定到变量。请建议。
// Create a table
DataTable table = new DataTable("users");
table.Columns.Add(new DataColumn("Id", typeof(int)));
table.Columns.Add(new DataColumn("Name", typeof(string)));
table.Rows.Add(1, "abc");
table.Rows.Add(2, "ddd");
table.Rows.Add(3, "fff");
table.Rows.Add(4, "hhh d");
table.Rows.Add(5, "hkf ds");
// Search for given id e.g here 1
DataRow[] result = table.Select("Id = 1"); // this will return one row for above data
foreach (DataRow row in result)
{
Console.WriteLine("{0}, {1}", row[0], row[1]);
}
这将为您从第0行获得值显然您需要修改多行返回
long id = ds.Tables[0].Rows[0].Field<long>("ID");
您可以使用LINQ完成此操作。
DataRow resultRow = ds.Tables["SomeTable"].AsEnumerable().Where(row => row.Field<int>("SomeID") == 1).FirstOrDefault();
对于。net 2.0及以下版本
如果你的DataTable定义了一个主键,你可以找到这样的行:
DataTable table = ds.Tables["SomeTable"];
DataRow row = table.Rows.Find(1);
如果没有主键,可以这样分配一个:
DataTable table = ds.Tables["SomeTable"];
table.PrimaryKey = new DataColumn[] { table.Columns["SomeID"] };
DataRow row = table.Rows.Find(1);
另一个选择是使用DefaultView的RowFilter属性,如下所示:
DataTable table = ds.Tables["SomeTable"];
table.DefaultView.RowFilter = "SomeID == 1"; //not sure if it's == or = here
DataRow row = table.DefaultView[0].Row;
最后,您还可以使用DataTable.Select()方法来查找行
您看过使用类型化数据集吗?如果您正在查找基于表的主键的行,它将自动生成一个方法,让您通过ID获取行,它将是强类型的,因此您可以通过名称获取列值。
它们在。net 2.0中非常方便,但是LINQ使它们变得相当过时。
编辑:一个稍微好一点的参考URL http://www.c-sharpcorner.com/UploadFile/rupadhyaya/TypedDataSets12032005021013AM/TypedDataSets.aspx我们可以使用这个简单的方法从数据集中获取值:
System.Data.DataSet ds = db.MySelect(
"Fields",
"Table",
"Condition"
);
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
object value=Tables[0].Rows[indx]["field name"];
}
}
从学生表中获取值并在控制台窗口中显示。
class Class1
{
static void Main(string[] args)
{
SqlConnection con=new SqlConnection(<connectionstring>);
SqlCommand cmd = new SqlCommand("select * from Student", con);
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
ad.Fill(ds);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
try
{
DataRow r = ds.Tables[0].Rows[i];
Console.WriteLine(r.Field<Int32>(0));
Console.WriteLine(r.Field<String>(1));
Console.WriteLine(r.Field<String>(2));
Console.WriteLine(r.Field<Decimal>(3));
Console.WriteLine(r.Field<Int16>(4));
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
Console.ReadKey();
}
}
sql Student table Info
Id int
Name varchar(50)
EmailId nvarchar(50)
MobileNo numeric(10,0)
Standard smallint