5
foreach (Item item in Items)
                        {
                            Cost = Cost +
                                    item.Costs.OrderByDescending(x => x.ID)
                                              .FirstOrDefault()
                                              .Cost;

                        }

The above LINQ returns 150.

I have 4 items(1,2,3,4) with the respective Cost. I need to rewrite the above LINQ to get the correct total cost of 210.

ID--ItemID-- Cost

11 -- 1 -- 10

21 -- 2 -- 20

31 -- 2 -- 30

41 -- 3 -- 40

51 -- 3 -- 50

61 -- 4 -- 60

Can anyone please provide the modified LINQ to do so?

Modifying the LINQ as below doesnt give me the expected result --

foreach (Item item in Items)
                    {
                        Cost = Cost +
                                item.Costs.Sum(r => r.Cost);
                    }
Rahul Singh
  • 21,585
  • 6
  • 41
  • 56
Sammy
  • 798
  • 2
  • 8
  • 23

1 Answers1

15

I am not sure why you are messing it up by looping first and writing a query again in the loop. Do it either with a foreach loop or a LINQ query like this:-

int result = items.Sum(x => x.Cost);

It will give you 210 as output.

Rahul Singh
  • 21,585
  • 6
  • 41
  • 56