你如何计算并返回c#中的总值?

时间:2014-12-05 17:05:27

标签: c# methods

我试图添加一个方法Takings来计算并返回此节目所有预订的总价值。如果有人能引导我朝着正确的方向前进,那就太棒了:)

namespace GCUShows
{
 public class Show
 {
    private string title;
    private Dictionary<int, Booking> bookings;

    public string Title
    {
        get { return title; }
        set { title = value; }
    }

    public Show(string title)
    {
        this.title = title;
        this.bookings = new Dictionary<int, Booking>();
    }

    public void AddBooking(int bookingID, Booking booking)
    {
        this.bookings.Add(bookingID, booking);
    }

    public void RemoveBooking(int bookingID, Booking booking)
    {
        this.bookings.Remove(bookingID);
    }
    public Takings
    {
    }
}

4 个答案:

答案 0 :(得分:1)

假设Bookings包含属性int Val,它可能如下所示:

public int Takes()
{
    return bookings.Values.Sum(b => b.Val);
}

答案 1 :(得分:1)

如果Booking有Cost属性,您可以这样做:

var total = bookings.Sum(x => x.Value.Cost);

答案 2 :(得分:1)

除了其他Linq答案,您可以使用foreach

执行相同的操作
public decimal Takings()
{
    decimal runningTotal = 0;
    foreach (KeyValuePair<int, Booking> kvp in bookings) {
        runningTotal += kvp.Value.TotalCost();
    }
    return runningTotal;
}
如果你不熟悉编程,那么它可能看起来不那么“神奇”。

答案 3 :(得分:0)

这是我的预订课程

命名空间GCUShows {     public enum TicketType     {         成人,         儿童,         家庭     }

public class Booking : ITicket
{
    private const int LIMIT = 6;

    public Show show;
    private int bookingID;
    public List<ITicket> tickets;

    public int BookingID
    {
        get { return bookingID; }
        set { bookingID = value; }
    }

    public Booking(Show show)
    {
        this.BookingID = BookingIDSequence.Instance.NextID;
        this.show = show;
        show.AddBooking(this);
        this.tickets = new List<ITicket>();
    }

    public void AddTickets(int number, TicketType type, decimal fee)
    {
        if (type == TicketType.Adult)
        {
            for(int i =0; i < number; i++)
            {
                tickets.Add(new AdultTicket(show.Title, fee));
            }
        }
            else if (type == TicketType.Child)
            {
                for(int i=0; i< number; i++)
                {
                    tickets.Add(new ChildTicket(show.Title));
                 }
            }
        else if (type == TicketType.Family)
        {
            for (int i = 0; i < number; i++)
            {
                tickets.Add(new FamilyTicket(show.Title, fee));
            }
         }
    }

    public string PrintTickets()
    {
        string ticketInfo = "Booking " + bookingID.ToString() + "\n";
        foreach (ITicket ticket in tickets)
        {
            ticketInfo += ticket.Print();
        }
        return ticketInfo;
    }

    public decimal TotalCost()
    {
        decimal totalCost;
        foreach (ITicket ticket in tickets)
        {
            totalCost += ticket.Fee;
        }
        return totalCost;
    }

    public override string ToString()
    {
        return string.Format("{0}: Total Cost={1:c}", bookingID, TotalCost());
    }

}

}