2015-08-14 64 views
3

所以我试图让这个控制台程序,你可以添加评论和评级给某本书。某些评论也可以提高。C# - 按列表中对象的属性排序<T>

这里是我的Comment.cs

class Comment 
{ 
    #region state 
    private readonly string name; 
    private readonly string commentary; 
    private readonly uint rating; 
    private uint votes; 
    #endregion state 
    #region constructor 
    public Comment(string name , string commentary, uint rating) 
    { 
     this.name = name; 
     this.commentary = commentary; 
     this.rating = rating; 
     this.votes = 0; 
    } 
    #endregion 

    #region properties 
    public string Name 
    { 
     get { return name; } 

    } 
    public string Commentary 
    { 
     get { return commentary; } 
    } 
    public uint Rating 
    { 
     get { return rating; } 
    } 
    public uint Votes 
    { 
     get { return votes; } 
     private set { votes = value; } 
    } 

    #endregion 

    #region behaviour 
    public void VoteHelpfull() 
    { 
      Votes++; 

    } 
    public override string ToString() 
    { 

     string[] lines ={ 
          "{0}", 
          "Rating: {1} - By: {2} voterating: {3}" 
         }; 
     return string.Format(
      string.Join(Environment.NewLine,lines),Commentary,Rating,Name,Votes); 
    } 

    #endregion 

} 

您可以在那里它们被存储在List<Comment> Comments

class Book 
{ 
    #region state 
    private readonly string bookname; 
    private readonly decimal price; 
    private List<Comment> comments; 
    #endregion 

    #region constructor 
    public Book(string bookname,decimal price) 
    { 
     this.bookname = bookname; 
     this.price = price; 
     comments = new List<Comment>(); 
    } 
    #endregion 

    #region properties 
    private List<Comment> Comments 
    { 
     get { return comments; } 
     set { comments = value; } 
    } 
    public string Bookname 
    { 
     get { return bookname; } 
    } 
    public decimal Price 
    { 
     get { return price; } 
    } 
    #endregion 

    #region behaviours 
    public void AddComment(string name, string commentary, uint rating) 
    { 
     Comments.Add(new Comment(name, commentary, rating)); 
    } 
    public override string ToString() 
    { 

     string s = string.Format("{0} - {1} euro - {2} comments",Bookname,Price,Comments.Count); 

     foreach (Comment c in Comments) 
     { 
      s += Environment.NewLine; 
      s += c; 

     } 
     return s; 
    } 

我试图秩序的意见书列表中添加注释书有我的评论对象的投票属性有,但我似乎无法使其工作...

+0

如何使用SortedSet的,使用自定义的IComparer /的Comparer 实现其做初始化的基础上,评论投票/评分比较? – elgonzo

回答

3

试试这个:

foreach (Comment c in Comments.OrderBy(c=>c.Votes)) 
{ 
    ..... 
} 
+0

谢谢,这使它工作 –