【问题标题】:transferring hard coded data to arrays将硬编码数据传输到数组
【发布时间】:2015-03-12 22:16:27
【问题描述】:

好的,所以我想就如何改进我的代码征求人们的意见,它没有任何问题,我觉得来到这个网站没有代码问题很奇怪。

目前,我的代码缺乏复杂性,根据定义它是硬代码,我想知道是否有方法可以通过将数据传输到数组或循环中来减少硬代码。

我在这里有一些代码,我认为一个小的 sn-p 就足够了。

 MySqlDataAdapter dAdapter = new MySqlDataAdapter(pQuery, Connection);
            dAdapter.Fill(dTable);
            dAdapter.Dispose();
            int One, Two, Three;
            One = Convert.ToInt32(dTable.Rows[0]["Cost"].ToString());
            Two = Convert.ToInt32(dTable.Rows[1]["Cost"].ToString());
            Three = Convert.ToInt32(dTable.Rows[2]["Cost"].ToString());

当然忽略 pQuery 和 Connection。我觉得我正在“走很长一段路”,而我确信有一种更清洁的方法可以做到这一点。

有什么建议吗?

【问题讨论】:

  • codereview.stackexchange.com 满足您的要求,但为什么不为数据创建一个类,我的意思是,您得到了正确的成本,用它的成本为那个东西创建一个类空间。

标签: c# mysql arrays winforms


【解决方案1】:

当然,您可以像这样使用列表和循环:

var costs = new List<int>();
foreach (DataRow row in dTable.Rows) {
    costs.Add(Convert.ToInt32(row["Cost"].ToString());
}

另请注意,您可以使用using 块而不是显式调用Dispose

using (var dAdapter = new MySqlDataAdapter(pQuery, Connection)) {
    dAdapter.Fill(dTable);
}

【讨论】:

    【解决方案2】:

    同样,您可以使用 LINQ 一次性完成。不是一条线更好,只是另一种方式:

    List<int> costs = (dTable.Rows
        .Cast<DataRow>()
        .Select(row => int.Parse(row["Cost"].ToString())))
        .ToList();
    

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 1970-01-01
      • 2016-02-08
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多