在数据表中查找值的 Linq 方法
本文关键字:Linq 方法 查找 数据表 | 更新日期: 2023-09-27 18:30:49
我可以请人帮我在 LINQ 中编写这个,
DataTable dt = new DataTable();
DataColumn dcValue = new DataColumn();
dcValue.ColumnName = "value";
DataColumn dvDisplay = new DataColumn();
dvDisplay.ColumnName = "display";
DataColumn dvIsDefualt = new DataColumn();
dvIsDefualt.ColumnName = "isDefalt";
dt.Columns.Add(dcValue,int);
dt.Columns.Add(dvDisplay,string);
dt.Columns.Add(dvIsDefualt,bool);
this.tipRacuna.DataSource = ds.Tables[0];
this.tipRacuna.ValueMember = "value";
this.tipRacuna.DisplayMember = "display";
this.tipRacuna.SelectedValue = findDefault(dt);//linq to find first value with default = true;
}
private int findDefault(DataTable dtt)
{
int i= 0;
foreach (DataRow dr in dtt.Rows)
{
if (bool.Parse(dr["isDefalt"].ToString()))
{
return int.Parse(dr["value"].ToString());
}
}
return i;
}
随着我越来越多地参与 C# 和编程,我在 LINQ 查询中变得越来越有趣。
一开始,我总是跳过 LINQ 进行论证,因为我知道 TSQL 不需要另一种查询语言,但是当我看到使用 LINQ 可以节省多少行代码时,我开始学习它。
假设您的数据库列是强类型(最佳):
dtt.AsEnumerable().Where( dr => dr.Field<bool>("isDefault" ) )
.Select( dr => dr.Field<int>( "value" ) ).FirstOrDefault();
使用类型转换:
dtt.AsEnumerable().Where( dr => Convert.ToBoolean( dr["isDefault"] ) )
.Select( dr => Convert.ToInt32( dr["value"] ) ).FirstOrDefault();
使用解析:
dtt.AsEnumerable().Where( dr => bool.Parse( dr["isDefault"].ToString() ) )
.Select( dr => int.Parse( dr["value"].ToString() ) ).FirstOrDefault();
请注意,我已将"isDefalt"的拼写更正为"isDefault"。
我认为这大致是你所追求的:
dtt.AsEnumerable()
// find items that match your 'if' condition
.Where(dr => bool.Parse(dr["isDefalt"].ToString()))
// perform your int parse
.Select(dr => int.Parse(dr["value"].ToString()))
// take the first result
.FirstOrDefault();