Home > Mobile >  How to choose different elements within an array of objects in c#
How to choose different elements within an array of objects in c#

Time:04-17

I have an Invoice class and a main class. I have an array of objects within my main class and I want to multiply the quantity(7) by the price(57.88). How do you select different elements within an object array. I have shown my main and my invoice classes. I'm looking for an example on how I would go about this pertaining to what I have done with my code.

 static void Main(string[] args)
    {
        var tools = new[]
        {
            new Invoice(83,"Electric Sander", 7, 57.88M),
            new Invoice(24, "Power Saw", 18, 99.99M),
            new Invoice(7, "Sledge Hammer", 11, 21.50M),
            new Invoice(77, "Hammer", 76, 11.99M),
            new Invoice(39, "Lawn Mower", 3, 79.50M),
            new Invoice(68, "Screwdriver", 106, 6.99M),
            new Invoice(56, "Jig Saw", 21, 11.00M),
            new Invoice(3, "Wrench", 34, 7.50M)
        };


        Console.WriteLine("Original Array: ");
        foreach (var tool in tools)
        {
            Console.WriteLine(tool);
        }

        var descriptionSort = from t in tools
            orderby t.PartDescription
            select t;
 }
 



public class Invoice
  {
    // declare variables for Invoice object
    private int quantityValue;
    private decimal priceValue;

    // auto-implemented property PartNumber
    public int PartNumber { get; set; }

    // auto-implemented property PartDescription
    public string PartDescription { get; set; }

    // four-argument constructor
    public Invoice(int part, string description,
        int count, decimal pricePerItem)
    {
        PartNumber = part;
        PartDescription = description;
        Quantity = count;
        Price = pricePerItem;
    }

    // property for quantityValue; ensures value is positive
    public int Quantity
    {
        get
        {
            return quantityValue;
        }
        set
        {
            if (value > 0) // determine whether quantity is positive
            {
                quantityValue = value; // valid quantity assigned
            }
        }
    }

    // property for pricePerItemValue; ensures value is positive
    public decimal Price
    {
        get
        {
            return priceValue;
        }
        set
        {
            if (value >= 0M) // determine whether price is non-negative
            {
                priceValue = value; // valid price assigned
            }
        }
    }

    // return string containing the fields in the Invoice in a nice format;
    // left justify each field, and give large enough spaces so
    // all the columns line up
    public override string ToString() =>
        $"{PartNumber,-5} {PartDescription,-20} {Quantity,-5} {Price,6:C}";
}

CodePudding user response:

You could always just add a getter to your Invoice class

public decimal TotalPrice
{
    get
    {
        return Price * Quantity;
    }
}

tools[0].TotalPrice to get the first element in your array

CodePudding user response:

You already "select different objects" here:

foreach (var tool in tools)
{
    Console.WriteLine(tool);

}

You could add to this, and even keep a total:

double total = 0;
foreach (var tool in tools)
{
    Console.WriteLine($"{tool.Quantity} of {tool.Name} (costing {tool.Price} each) totals {tool.Quantity * tool.Price}");

    total  = (tool.Quatity * tool.Price);
}

Console.WriteLine("Invoice total "   total);

You can also access arrays etc by index, typical examples being:

for(int x = 0; x < tools.Length; x  )
  Console.WriteLine(tools[x].Price);

for(int x = tools.Length-1; x >= 0; x--)
  Console.WriteLine(tools[x].Price);

This is a common requirement to do that they have a shortcut - you type forTABTABorforr`TABTAB VS will insert skeletons of these for you

  • Related