工序日产量,想实现按查询内容的最后一行,减去第一行,请指导

请问一下,我查询了工序生产的日产量,想实现按查询内容的最后一行,减去第一行,请问这个思路是什么,代码怎么写;以下是我设计窗体查询内容的截图,和查询按钮的语句,敬请各位同仁指点一下,多谢;

img


```c#
 //连接数据库
            conn = new SqlConnection("server=IP;database=mes;user=sa;password=123");

            conn.Open();

            //查询条件      
            SqlString = "select EquipmentName,CreateTime,ParamsName,Value from b_HistoricalData where Equipmentname = '" + comboBox1.Text + "'and ParamsName like '%" + textBox1.Text + "%' and CreateTime >= '" + dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss") + "' and CreateTime <= '" + dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss") + "' order by CreateTime asc";
                
           //加载数据并显示

            try
            {
                //查询条件和SqlConnection连接
                SqlCommand cmd = new SqlCommand(SqlString, conn);
                //数据适配器
                SqlDataAdapter sda = new SqlDataAdapter();
                sda.SelectCommand = cmd;
                //DataTable存储数据
                DataTable dt = new DataTable();
                sda.Fill(dt);
                dataGridView1.DataSource = dt;
            }
            catch
            { }
            finally
            {
                conn.Close();
            }

```

基于Monster 组和GPT的调写:
从查询结果中获取最后一行和第一行的值。

计算差值。

显示差值。
//获取查询结果的行数
int rowCount = dataGridView1.Rows.Count;
if (rowCount > 1) //至少有两行数据
{
    //获取最后一行的值
    double lastValue = Convert.ToDouble(dataGridView1.Rows[rowCount - 1].Cells["Value"].Value);
    //获取第一行的值
    double firstValue = Convert.ToDouble(dataGridView1.Rows[0].Cells["Value"].Value);
    //计算差值
    double diff = lastValue - firstValue;
    //显示差值
    MessageBox.Show("差值为:" + diff.ToString());
}
else //没有数据或只有一行数据
{
    MessageBox.Show("查询结果为空或只有一行数据。");
}


该回答引用GPTᴼᴾᴱᴺᴬᴵ
如果你要实现按查询内容的最后一行,减去第一行,可以在查询到数据后进行计算。具体思路如下:

在try语句块中获取到查询到的数据,存储在DataTable中。

判断DataTable中是否有数据,如果没有,直接返回。

如果DataTable中有数据,获取最后一行和第一行的值。

对这两个值进行相减,得到结果。

将结果显示在界面上,或者进行其他操作。

以下是示例代码,你可以根据自己的需求进行修改:

try
{
    //查询条件和SqlConnection连接
    SqlCommand cmd = new SqlCommand(SqlString, conn);
    //数据适配器
    SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand = cmd;
    //DataTable存储数据
    DataTable dt = new DataTable();
    sda.Fill(dt);
    
    if(dt.Rows.Count > 0)
    {
        //获取第一行和最后一行的值
        int firstValue = Convert.ToInt32(dt.Rows[0]["Value"]);
        int lastValue = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1]["Value"]);
        
        //计算结果
        int result = lastValue - firstValue;
        
        //在界面上显示结果
        label1.Text = result.ToString();
    }
}
catch
{ }
finally
{
    conn.Close();
}


注意,示例代码中只是获取了第一行和最后一行的Value值,如果需要获取其他列的值,可以按照自己的需求进行修改。同时,对于类型转换的问题,如果Value列的数据类型不是整型,需要进行相应的修改。