Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 排序DataGridView组合框值_C#_Visual Studio_Sorting_Datagridview_Datagridviewcomboboxcell - Fatal编程技术网

C# 排序DataGridView组合框值

C# 排序DataGridView组合框值,c#,visual-studio,sorting,datagridview,datagridviewcomboboxcell,C#,Visual Studio,Sorting,Datagridview,Datagridviewcomboboxcell,我一直在尝试通过循环对当前添加到ComboxCell的一些值进行排序,我使用dataview的排序,但是这只是对值的1进行排序,而没有考虑其余的数字 示例代码: 结果: 我想得到的是下面的例子:1,10,100,200,而不是1,11,110,2,20,23,3等等。如果有人有任何想法 谢谢您可以使用LINQ: DataTable sortedByValue = sortedDT.AsEnumerable() .OrderBy(r=> r.Fiel

我一直在尝试通过循环对当前添加到ComboxCell的一些值进行排序,我使用dataview的排序,但是这只是对值的1进行排序,而没有考虑其余的数字

示例代码:

结果:

我想得到的是下面的例子:1,10,100,200,而不是1,11,110,2,20,23,3等等。如果有人有任何想法

谢谢

您可以使用LINQ:

DataTable sortedByValue = sortedDT.AsEnumerable()
                   .OrderBy(r=> r.Field<decimal>("MATERIALPROFILE"))
                   .CopyToDataTable();
DataTable sortedByValue=SortedDdt.AsEnumerable()
.OrderBy(r=>r.Field(“材料档案”))
.CopyToDataTable();

您可以使用LINQ对其进行排序并获得“MATERIALPROFILE”列表

下面是一个简单的演示,可以设置combobox数据

List<decimal> datasource = dt.AsEnumerable()
    .OrderBy(r => r.Field<decimal>("MATERIALPROFILE"))
    .Select(r => r.Field<decimal>("MATERIALPROFILE"))
    .ToList();


DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
combo.DataSource = datasource;

dataGridView1.Columns.Add(combo);
List datasource=dt.AsEnumerable()
.OrderBy(r=>r.Field(“材料档案”))
.选择(r=>r.字段(“材料档案”))
.ToList();
DataGridViewComboBoxColumn组合=新建DataGridViewComboxColumn();
combo.DataSource=数据源;
dataGridView1.Columns.Add(组合);

更新:

修改OrderBy子句,如:

.OrderBy(r => Convert.ToInt32(r.Field<string>("FieldName").Split('x')[0].Trim()))
.OrderBy(r=>Convert.ToInt32(r.Field(“FieldName”).Split('x')[0].Trim())

您需要按值排序。相反,您的程序是按字母顺序排序的。@Zeokat您将如何进行排序?我得到的错误:代码示例:@StevenLemos“MATERIALPROFILE”的类型是什么?在我的测试中,它是一个“小数”。您可以将其修改为您设置的类型,以便我将其存储为字符串,因为其中有一个(x)分隔了一些“MATERIALPROFILE”。所以我可以有和屏幕截图上一样的十进制数字,但我也可以有类似的数字。我已经将它从十进制改为字符串,但是,我需要它取每个字符串的前2个数字,并用它们来排序。@StevenLemos前2个数字?将其排序为
120150180,20200,…
?抱歉,意思是在(x)分隔之前说出整数。例如:10x10//14x14//20x20//60x60//100x100//200x200//300x300,我也尝试过使用它,但我得到了与上面答案相同的结果(错误)。