我遇到了包含书签的list属性的问题。在我开始摆弄之前它工作得很好。 我希望列表在获取时始终从a-z排序,我希望列表能够设置为放入的值。
我不确定为什么它不起作用。任何有关让后者工作的建议,或以任何其他方式对列表进行排序的任何建议都非常感谢和欢迎!
这里的书签列表是从数据库查询中设置的:
model.Bookmarks = GetBookmarks().Select(b => new UIBookmark(b, DbHelper)).ToList();
这有效:
public List<UIBookmark> Bookmarks { get; set; }
这不是:
public List<UIBookmark> Bookmarks { get { return Bookmarks.OrderBy(b => b.Name).ToList(); } set { Bookmarks = value; } }
答案 0 :(得分:3)
如果您没有使用自动属性,则必须使用字段来存储您的数据。
private List<UIBookmark> _bookmarks;
public List<UIBookmark> Bookmarks { get { return _bookmarks.OrderBy(b => b.Name).ToList(); } set { _bookmarks = value; } }
基本上,自动属性做同样的事情,你不必写任何东西。
答案 1 :(得分:1)
您将需要使用支持字段,而不是在getter和setter中引用属性本身,如下所示:
private List<UIBookmark> _bookmarks;
public List<UIBookmark> Bookmarks { get { return _bookmarks.OrderBy(b => b.Name).ToList(); } set { _bookmarks = value; } }
MSDN上有一些很好的文章介绍了Properties和Auto-Properties的概念,我建议你阅读这些概念。