C# - 按List <t>中的Object属性排序

时间:2015-08-14 22:22:35

标签: c# list object

所以我正在尝试创建这个控制台程序,您可以在其中添加评论和评级到某本书。某个评论也可以被赞成。

这是我的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;
    }

我正在尝试通过评论对象的投票属性订购一本书的评论列表,但我似乎无法使其有效......

1 个答案:

答案 0 :(得分:3)

试试这个:

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