从DataSet获取值到一个变量
我有下面的方法返回数据集。我正在使用.NET 2.0从DataSet获取值到一个变量
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]);
}
你可以用LINQ来做到这一点。
DataRow resultRow = ds.Tables["SomeTable"].AsEnumerable().Where(row => row.Field<int>("SomeID") == 1).FirstOrDefault();
对于.NET 2.0及以下
如果你的数据表有定义主键,你可以找到行是这样的:
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);
另一种选择是你se 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()方法查找行。
我感谢你的回答。我使用的是.NET 2.0,我不能使用Lamda表达式。我应该在我的问题中加上这一点。我道歉。 – kalls
这将让你从0行明显的价值,你会需要修改多行返回
long id = ds.Tables[0].Rows[0].Field<long>("ID");
你看使用类型化的DataSet?如果您正在查找基于表的主键的行,它会自动生成一个方法,让您通过ID获取行,并且它将被强类型化,以便您可以按名称获取列值。
他们在.Net 2.0中非常方便 - 但LINQ使他们相当过时。
编辑:稍微好一点的参考网址
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"];
}
}
检查DataTable.Select方法@ HTTP:// MSDN。 microsoft.com/en-us/library/det4aw50.aspx。在你的表中,它将是'ds.Tables [0] .Select(“”);' –
Chandu