C#是否可以将LINQ子句中的orderby抽象为函数参数?

我有一个ObservableCollection绑定到 WPF列表视图.我希望能够通过单击列标题对ListView控件的列进行排序.为此,我正在对ObservableCollection进行排序,并让绑定负责更新GUI.

要对ObservableCollection进行排序,我使用以下代码

sortedData = new ObservableCollection<Tag>( from x in data
                                            orderby x.ID descending
                                            select x );
data = sortedData;

注意:数据绑定到ListView

我遇到的问题是,对于每个列,会有很多复制粘贴代码来实现所需的效果.是否可以将LINQ语句的’orderby x.ID descending’部分作为函数参数传递?

或者是否有更简单的方法来达到预期的效果

解决方法

您可以使用Func作为包含lambda表达式的方法参数.

如果您想按照它的ID对每个类型进行排序,您也可以在所有这些类型上指定一个接口并使用通用方法.

例如

public ObservableCollection<Tag> Sort(Func<ObservableCollection<Tag>> sortFunc)  
{  
    //do something else  
    data = sortFunc();  
    //do something else  
}

可以这样称呼

排序(list.OrderByDescending(x => x.ID));

其中列表是您的ObservableCollection.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...