gpt4 book ai didi

c# - 在 DataTable 中查找值的 Linq 方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:51 25 4
gpt4 key购买 nike

我可以请别人帮我用 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();

请注意,我已将“isDefault”的拼写更正为“isDefault”。

关于c# - 在 DataTable 中查找值的 Linq 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com