值未根据条件 c# 在 datagridview 中转换

values are not transforming in datagridview as per condition c#

我想根据条件更改 datagridview 列的值,如果 cell.value 是单元格必须包含的所有值中的最小值 "L" ,即低。如果该值是所有 cell.value = "H" 中最高的,其余的应该是中等。这是我到目前为止所做的:

 //Function to display interaction as High, Medium and Low
    public  void ShowInteraction(DataGridView dv, string columnName)
    {
        //MAX 
        var Max = dv.Rows.Cast<DataGridViewRow>()
                    .Max(r => Convert.ToDouble(r.Cells[columnName].Value));





        //MIN 
        List<double> arr = new List<double>();

        foreach (DataGridViewRow row in dv.Rows)
        {

            if (row != null && row.Cells[columnName].Value != null)
            {

                arr.Add(Convert.ToDouble(row.Cells[columnName].Value.ToString()));
            }
        }

        double Min = arr.Min();

        //show interaction in datagridview as H, M nad L
        foreach (DataGridViewRow row in dv.Rows)
        {
            if (row.Cells[columnName].Value != null)
            {
                if ((double)row.Cells[columnName].Value ==  Min)
                {
                    row.Cells[columnName].Value = Convert.ToString( "L" );

                }
                else if ((double)row.Cells[columnName].Value == Max)
                {
                    row.Cells[columnName].Value = Convert.ToString( "H" );
                }
                else if ((double)row.Cells[columnName].Value < Max && (double)row.Cells[columnName].Value > Min)
                {
                    row.Cells[columnName].Value = Convert.ToString("M");
                }
                else if ((double)row.Cells[columnName].Value == 0.0000)
                {
                    row.Cells[columnName].Value = Convert.ToString("N");
                }

                else
                {
                    row.Cells[columnName].Value = Convert.ToString("L");
                }


            }
        } 
    }

这是结果:

我的问题是显示了中值和高值,但有时它会避开最低值并且在某些列中不显示任何 "L"。生成的数据是随机数据。

我稍微清理了你的代码,我没有看到你的错误。让我知道这是否对您的问题有帮助。

public partial class MainForm : Form {

    public MainForm() {
        InitializeComponent();
        DataGridView dgv = new DataGridView();
        dgv.Columns.Add("columnName", "columnName");
        dgv.AllowUserToAddRows = false;

        dgv.Rows.Add(21.0);
        dgv.Rows.Add(15.0);
        dgv.Rows.Add(20.0);
        dgv.Rows.Add(25.0);
        dgv.Rows.Add(30.12354122);

        this.Controls.Add(dgv);

        ShowInteraction(dgv, "columnName");
    }

    public void ShowInteraction(DataGridView dv, string columnName) {
        List<double> values = dv.Rows.Cast<DataGridViewRow>().Select(row => Convert.ToDouble(row.Cells[columnName].Value)).ToList();
        double Max = values.Max();
        double Min = values.Min();

        foreach (DataGridViewRow row in dv.Rows)
        {
            if (row.Cells[columnName].Value != null)
            {
                double cellValue = Convert.ToDouble(row.Cells[columnName].Value);
                var cell = row.Cells[columnName];
                if (cellValue == Min)
                {
                    cell.Value = "L";
                }
                else if (cellValue == Max)
                {
                    cell.Value = "H";
                }
                else if (cellValue < Max && cellValue > Min)
                {
                    cell.Value = "M";
                }
                else if (cellValue == 0)
                {
                    cell.Value = "N";
                }
                else
                {
                    cell.Value = "L";
                }
            }
        }
    }
}