我有ObservableCollection列表,我想按字母排序 例如:当我输入3个名字(篮球,阿拉伯,俱乐部)时 输出 : 篮球, 阿拉伯, 俱乐部
我想要这样: 阿拉伯, 篮球, 俱乐部,
此代码用于ObservableCollection:
public ObservableCollection<Contact> ContactList { get; set; }
以及此添加和删除项目的代码
public ContactsListView()
{
InitializeComponent();
ContactList = new ObservableCollection<Contact>();
BindingContext = new Contact();
MessagingCenter.Subscribe<Contact>(this, "addNew", (addItem) =>
{
ContactList.Add(new Contact { Name = addItem.Name, PhoneNo = addItem.PhoneNo, Address = addItem.Address, NickName = addItem.NickName });
});
MessagingCenter.Subscribe<Contact>(this, "deleteContact", (Account) =>
{
ContactList.Remove(Account);
});
MyListView.ItemsSource = ContactList;
AddNewContact.Clicked+= AddNewContact_Clicked;
}
答案 0 :(得分:0)
您可以使用linq进行如下排序:
var sortedContactList = ContactList.OrderBy(x => x.Name);
您需要在文件顶部添加using System.Linq;
。
答案 1 :(得分:0)
ObservableCollection类本身没有排序方法。 但是通过使用集合,您可以重新创建它。
var ContactList = new ObservableCollection<string> { "club", "arab", "basketball", };
ContactList = new ObservableCollection<string>(ContactList.OrderBy(i => i));
答案 2 :(得分:0)
您可以使用ObservableCollection
方法对当前ContactList
进行排序,而不是为Move
重新创建新排序的 ContactList
。>
private void SortContacts()
{
// order by name
var sortedContact = ContactList.OrderBy(x => x.Name).ToList();
for (var i = 0; i < sortedContact.Count; i++)
ContactList.Move(ContactList.IndexOf(sortedContact[i]), i);
}
添加或删除联系人项目后,调用上述方法。