Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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# 根据行中的单词对数据表进行排序_C#_Sorting_Datatable - Fatal编程技术网

C# 根据行中的单词对数据表进行排序

C# 根据行中的单词对数据表进行排序,c#,sorting,datatable,C#,Sorting,Datatable,我正在努力根据每行中的字数对Datatable中的记录进行排序。数据表将填充语义库单词,即 Library_Column --------------- Business Means Medium Business Business Ways Medium Business Medium Descriptions Ways 我想对这些记录进行如下排序,以便使用包含记录的最大字符串/行进行匹配 Library_Column -------------- Business Medium Des

我正在努力根据每行中的字数对Datatable中的记录进行排序。数据表将填充语义库单词,即

Library_Column
---------------
Business 
Means 
Medium Business
Business Ways
Medium
Business Medium Descriptions
Ways
我想对这些记录进行如下排序,以便使用包含记录的最大字符串/行进行匹配

Library_Column
--------------
Business Medium Descriptions
Medium Business
Business Ways
Business
Means
Ways 

您可以添加两列,一列用于计算单词,一列带有表达式以存储字符串长度。由于带有表达式的列的选项是有限的,我们必须手动更新循环中的“WordCount”列值

//Call data layer that returns your data table prior to this, 
//and then we will add our custom columns
dt.Columns.Add("WordCount", typeof(int));

foreach (DataRow r in dt.Rows)
{
    r["WordCount"] = r["Library_Column"].ToString().Split(new char[] { ' ' }).Length;
}

dt.Columns.Add("LenOfCol", typeof(int), "len(Library_Column)");
然后在数据绑定之前更新
DataTable.DefaultView.Sort
,首先按字数排序,然后按字符串长度排序(如果多行具有相同的字数)


我已经编辑了你的标题。请看,“,共识是“不,他们不应该”。@kashif4u我第一次误解了你的问题。我更新了答案,将单词计数作为第一个排序选项。谢谢。即使是第一个解决方案也很好,我只是到周末才有足够的时间来实施它。干杯
dt.DefaultView.Sort = "WordCount DESC, LenOfCol DESC";