属性无法设置

时间:2018-01-03 15:49:32

标签: c# entity-framework

我遇到了包含书签的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; } }

2 个答案:

答案 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上有一些很好的文章介绍了PropertiesAuto-Properties的概念,我建议你阅读这些概念。