gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:17:18 25 4
gpt4 key购买 nike

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

为了对 ObservableCollection 进行排序,我使用了以下代码:

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

注意:数据绑定(bind)到 ListView

我遇到的问题是,对于每一列,都会有大量的复制粘贴代码来达到预期的效果。是否可以将 LINQ 语句的“orderby x.ID 降序”部分作为函数参数传递?

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

最佳答案

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

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

例如

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

可以这样称呼

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

您的 ObservableCollection 在哪个列表中。

关于C# 是否可以将 orderby LINQ 子句抽象为函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6248867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com