C# 根据行中的单词对数据表进行排序
我正在努力根据每行中的字数对Datatable中的记录进行排序。数据表将填充语义库单词,即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
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";