datagridview排序列值可空的数字列LINQ

本文介绍如何使用DataGridView和LINQ对包含可空数字的列进行排序,首先筛选出所有非字母项,然后创建新表,分别将空行和非空行按数字大小排序后插入,最终更新DataGridView的数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

datagridview排序列值可空的数字列LINQ
            int selcol = dataGridView1.CurrentCell.ColumnIndex;

            var dr = from item in dtCopy.Columns[selcol].Table.Select()
                     where Regex.IsMatch(item.ItemArray[selcol].ToString(), @"[A-Za-z]")
                     select item;

            #region 排序数字列
            if (dr.Count() == 0)
            {
                DataTable dt = new DataTable();

                //创建列
                foreach (DataColumn item in dtCopy.Columns)
                    dt.Columns.Add(item.ColumnName);

                //所有空行
                var reslut0 = from item in dtCopy.Select()
                              where item[selcol].ToString() == ""
                              select item;

                //所有非空行
                var result = from item in dtCopy.Select()                             
                             where item[selcol].ToString() != ""
                             orderby int.Parse(item[selcol].ToString()) ascending                                                                                        
                             select item;

                //添加空行到新表
                foreach (DataRow item in reslut0)
                {
                    DataRow drNew = dt.NewRow();

                    for (int i = 0; i < item.Table.Columns.Count; i++)
                        drNew[i] = item[i];

                    dt.Rows.Add(drNew);
                }

                //添加非空行到新表
                foreach (DataRow item in result)
                {
                    DataRow drNew = dt.NewRow();

                    for (int i = 0; i < item.Table.Columns.Count; i++)
                        drNew[i] = item[i];

                    dt.Rows.Add(drNew);
                }

                dataGridView1.DataSource = dt;
            }

            #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值