我不知道这是否可能,但让我问你。如何使用例如 LINQ 以更短的方式编写以下循环?
DataSet dsAllMonsters
List<string> lstAllMonsters
for (int i = 0; i < dsAllMonsters.Tables[0].Rows.Count; i++)
{
lstAllMonsters.Add(dsAllMonsters.Tables[0].Rows[i]["pokemonId"].ToString());
}
我认为可以。
lstAllMonsters = dsAllMonsters.Tables[0].Rows
.Cast<DataRow>()
.Select(r => r["pokemonId"].ToString())
.ToList();
是的,它可以在一行中完成:
lstAllMonsters = dsAllMonsters.Tables[0].Rows.Cast<DataRow>().Select(row => row["pokemonId"].ToString()).ToList();
但有时两条线比一条线好。我想你会发现这更具可读性:
var rows = dsAllMonsters.Tables[0].Rows.Cast<DataRow>();
lstAllMonsters = rows.Select(row => row["pokemonId"].ToString()).ToList();
在一条线上实现它的另一种方法。
dsAllMonsters.Tables[0].AsEnumerable().ToList().ForEach((DataRow a) => lstAllMonsters.Add(a["pokemonId"].ToString()));