【问题标题】:How to sum Time from a DataGridView Columns如何从 DataGridView 列中求和时间
【发布时间】:2014-09-20 16:38:00
【问题描述】:

我有一个带有时间列的 DataGrid,我需要对它求和以获得总时间,但我无法得到! 我正在使用此代码尝试使用 Linq 的时间总和:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    textBox8.Text = dataGridView1.Rows.Cast<DataGridViewRow>()
                                 .AsEnumerable()
                                 .Sum(x => decimal.Parse(x.Cells["Duracao"].Value.ToString()))
                                 .ToString();
}

有人可以帮我吗? 问候

【问题讨论】:

  • 你在那个单元格中的 DateTime 格式是什么?
  • 根据“Duracao”字符串的格式,使用TimeSpan.Parse 并将内容添加为TimeSpan 可能会更好。
  • 您一遍又一遍地重复对单元格的值求和,而不需要。
  • @Pankaj,我将其作为 varchar(50) 保存到数据库中,并显示为“00:00”

标签: c# sql linq datetime datagridview


【解决方案1】:

看看下面的代码示例。也许它会帮助你:

private void BindGrid()
{
    // Bind Grid
    var times = new List<Info>();
    times.Add(new Info(){ Time = "0:3:5" });
    times.Add(new Info() { Time = "0:2:10" });
    times.Add(new Info() { Time = "1:15:30" });
    this.dataGridView1.DataSource = times;

    // Retrieve total seconds
    double seconds = 0;
        seconds = dataGridView1.Rows.Cast<DataGridViewRow>()
            .AsEnumerable()
            .Sum(x => TimeSpan.Parse((x.Cells["Time"].Value.ToString())).TotalSeconds);

    // Assign to textbox
    textBox8.Text = TimeSpan.FromSeconds(seconds).Hours + ":" + TimeSpan.FromSeconds(seconds).Minutes
            + TimeSpan.FromSeconds(seconds).Seconds;
}

信息类:

public class Info
{
    public string Time { get; set; }
}

【讨论】:

  • 你没有添加:this.dataGridView1.DataBind();
  • datagrid中不需要添加。
  • @SpiderCode 谢谢!它现在可以工作了:D 我现在只需要在显示类型中工作,我需要这种布局“00:00”,它会检索我“0:0”!非常感谢:D 问候
  • @Reznor13 :很高兴为您提供帮助。祝你有美好的一天:)
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多