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