如何按字段长度对ASP.NET DataGrid进行排序?

时间:2020-03-06 14:20:52  来源:igfitidea点击:

我有一个DataGrid,其中每个列都有一个SortExpression。我希望排序表达式等效于" ORDER BY LEN(myField)"。

我试过了

SortExpression="LEN(myField)"

但这会引发异常,因为它不是有效的语法。有任何想法吗?

解决方案

那么已经可以通过查询返回len了,但是不显示该列,仅将其用作原始列的sortexpression怎么办?

我认为默认情况下不支持想法。

根据SQL风格,以下方法可能会起作用:

SELECT
 ColumnA as FieldA
 , ColumnB as FieldB
 , LEN(ColumnA) as FieldL
FROM TableName
ORDER BY L

然后做

SortExpression="FieldL"

" SortExpression"参数指定要排序的列的名称,后跟" ASC"或者" DESC"以控制顺序。

我们可以更改列的" DataType"属性,以指定用户定义的类型,其比较器功能比较字符串长度。这将不是一件容易的事。

使用Linq,我们可以将查询编写为:

query.OrderBy(column => column.MyField.Length);

嗯有一段时间测试。我能够使SortExpression =" Description.Length"正常工作。这是1.1、2.0或者3.5?