RSM*_*RSM 34 c# datatable datarow
我在数据表中有两列:
ID, Calls.
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到Calls的价值where ID = 5?
5可以是任何数字,例如它.每行都有一个唯一的ID.
Kar*_*son 58
创建一个字符串条件来搜索,如下所示:
string searchExpression = "ID = 5"
Run Code Online (Sandbox Code Playgroud)
然后使用对象的.Select()方法DataTable,如下所示:
DataRow[] foundRows = YourDataTable.Select(searchExpression);
Run Code Online (Sandbox Code Playgroud)
现在你可以遍历结果,如下所示:
int numberOfCalls;
bool result;
foreach(DataRow dr in foundRows)
{
// Get value of Calls here
result = Int32.TryParse(dr["Calls"], out numberOfCalls);
// Optionally, you can check the result of the attempted try parse here
// and do something if you wish
if(result)
{
// Try parse to 32-bit integer worked
}
else
{
// Try parse to 32-bit integer failed
}
}
Run Code Online (Sandbox Code Playgroud)
Hab*_*bib 41
您可以使用LINQ to DataSet/DataTable
var rows = dt.AsEnumerable()
.Where(r=> r.Field<int>("ID") == 5);
Run Code Online (Sandbox Code Playgroud)
由于每一行都有一个唯一的ID,Single/SingleOrDefault因此如果您获得多个记录,则应该使用哪个会抛出异常.
DataRow dr = dt.AsEnumerable()
.SingleOrDefault(r=> r.Field<int>("ID") == 5);
Run Code Online (Sandbox Code Playgroud)
(替换int您的ID字段的类型)
小智 7
我可以使用以下代码.感谢大家.
int intID = 5;
DataTable Dt = MyFuctions.GetData();
Dt.PrimaryKey = new DataColumn[] { Dt.Columns["ID"] };
DataRow Drw = Dt.Rows.Find(intID);
if (Drw != null) Dt.Rows.Remove(Drw);
Run Code Online (Sandbox Code Playgroud)
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5);
if (dataRow != null)
{
// code
}
Run Code Online (Sandbox Code Playgroud)
如果它是类型化的 DataSet:
MyDatasetType.MyDataTableRow dataRow = dataSet.MyDataTable.FirstOrDefault(r => r.ID == 5);
if (dataRow != null)
{
// code
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173899 次 |
| 最近记录: |