我在文本框上绑定了一个名为TestList的ObservableCollection<KeyValuePair<int, String>>()
,我希望按int
对该集合进行排序。我尝试过以下操作,但它没有对集合进行排序:
new ObservableCollection<KeyValuePair<int, string>>(
TestList .Where(p => p.Key > 0)
.GroupBy(p => p.Key)
.Select(grp => grp.First())
.OrderBy(p => p.Key)
);
如何对集合进行排序? Binding还能运作吗?
编辑(也不起作用):
public ObservableCollection<KeyValuePair<int, String>> TestList
{
get { return testList; }
set {
testList = value;
NotifyPropertyChanged("TestList");
}
}
public void Test(int index)
{
TestList.RemoveAt(index);
TestList = new ObservableCollection<KeyValuePair<int, string>>(TestList.OrderBy(p => p.Key));
}
和GUI:
<TextBox Grid.Column="0" IsReadOnly="True"
Text="{Binding Path=Value , Mode=OneWay}" />
答案 0 :(得分:5)
你不必分组。你只需要一个简单的订单。
TestList.OrderBy(p => p.Key)
答案 1 :(得分:1)
由于您的源包含KeyValuePair
个对象,您可能会认为密钥已经过重复数据删除。因此,分组没有用处。只需保留OrderBy
,也可以保留Where
,你应该没问题。
new ObservableCollection<KeyValuePair<int, string>>(
TestList.Where(p => p.Key > 0)
.OrderBy(p => p.Key)
);