我有一个 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?