我不知道这是否可能,但让我问你。如何使用例如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());
}
答案 0 :(得分:4)
我认为可以。
lstAllMonsters = dsAllMonsters.Tables[0].Rows
.Cast<DataRow>()
.Select(r => r["pokemonId"].ToString())
.ToList();
答案 1 :(得分:4)
是的,它可以在一行中完成:
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();
答案 2 :(得分:0)
另一种方法是在一条线上实现它。
dsAllMonsters.Tables[0].AsEnumerable().ToList().ForEach((DataRow a) => lstAllMonsters.Add(a["pokemonId"].ToString()));