根据行中的单词对DataTable进行排序

时间:2014-04-03 20:43:44

标签: c# sorting datatable

我正在努力根据每行中出现的单词数量对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 

1 个答案:

答案 0 :(得分:0)

您可以添加2列,一列用于计算单词,一列用表达式来存储字符串的长度。由于带有表达式的列的选项有限,我们必须在循环中手动更新“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,先按字数排序,然后再按字符串长度排序(在多行具有相同字数的情况下)。

dt.DefaultView.Sort = "WordCount DESC, LenOfCol DESC";