C# 按nullable类属性排序ObservableCollection,然后按
我正在尝试对包含以下类的ObservabkeCollection对象进行排序C# 按nullable类属性排序ObservableCollection,然后按,c#,sorting,ienumerable,observablecollection,C#,Sorting,Ienumerable,Observablecollection,我正在尝试对包含以下类的ObservabkeCollection对象进行排序 public Favourites(string title=null, string uri=null, string folder=null, bool delete=false) { this.pageTitle = title; this.pageURI = uri; this.folder = folder; this.deleteEnabled = delete; }
public Favourites(string title=null, string uri=null, string folder=null, bool delete=false)
{
this.pageTitle = title;
this.pageURI = uri;
this.folder = folder;
this.deleteEnabled = delete;
}
我尝试按文件夹排序,然后按uri排序。虽然uri和title可以为null,但在我的例子中,我总是为它们分配一些非null的内容。但是,文件夹属性可以为空
我要排序的代码
private void sortCollectionFolderFirst()
{
IEnumerable<Favourites> sort;
ObservableCollection<Favourites> tempSortedFavourites = new ObservableCollection<Favourites>();
tempFavs.Clear();
tempFavs = settings.FavouritesSetting;
sort = tempFavs.OrderByDescending(item => item.Folder).ThenBy(item => item.PageURI);
foreach (var item in sort)
{
tempSortedFavourites.Add(item);
}
settings.FavouritesSetting = tempSortedFavourites;
}
但是当遇到具有以下内容的项时,sort
返回空
this.pageTitle = sometitle;
this.pageURI = someuri;
this.folder = somefoldername;
this.deleteEnabled = false or true;
这是为什么?它可能是一种类型,但您的实例成员的大小写与您在Linq查询中使用的大小写不同。例如,Folder和Folder。我正在通过
Folder
访问属性,上面没有显示该属性公共字符串文件夹{get{return Folder;}set{Folder=value;PropChanged(“Folder”);}}对于给定的示例,排序应该可以正常工作。在进行排序之前,您确定在第二个示例中填充了tempFavs吗?啊,您是对的,在第二个示例中,我在某个地方犯了一个错误,指定了设置。收藏夹设置为空值,因此tempFavs
没有填充。
this.pageTitle = sometitle;
this.pageURI = someuri;
this.folder = somefoldername;
this.deleteEnabled = false or true;