4

これが可能かどうかはわかりませんが、質問させてください。たとえば、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());
}
4

3 に答える 3

4

できたと思います。

lstAllMonsters = dsAllMonsters.Tables[0].Rows
   .Cast<DataRow>()
   .Select(r => r["pokemonId"].ToString())
   .ToList();
于 2012-11-21T14:37:04.560 に答える
4

はい、1行で実行できます。

lstAllMonsters = dsAllMonsters.Tables[0].Rows.Cast<DataRow>().Select(row => row["pokemonId"].ToString()).ToList();

ただし、2行の方が1行よりも優れている場合もあります。これはもっと読みやすいと思います:

var rows = dsAllMonsters.Tables[0].Rows.Cast<DataRow>();
lstAllMonsters = rows.Select(row => row["pokemonId"].ToString()).ToList();
于 2012-11-21T14:37:20.630 に答える
0

1行でそれを達成するさらに別の方法。

dsAllMonsters.Tables[0].AsEnumerable().ToList().ForEach((DataRow a) => lstAllMonsters.Add(a["pokemonId"].ToString()));
于 2012-11-21T15:02:06.627 に答える