I would like to group my LINQ query using ItemNumber and return the entire table with the total for Quantity .
Example: ItemNumber - ItemName - Quantity 100 Item1 1 150 Item2 2 100 Item1 2 200 Item3 1 150 Item2 2 Should be: ItemNumber - ItemName - Quantity 100 Item1 3 150 Item2 4 200 Item3 1
This is the query I'm trying to group:
public IQueryable<WebsiteOrderStatus> GetOrderStatusByAccountNumberWithoutDeleted (string accountNumber) { return db.WebsiteOrderStatus .Where(x => x.AccountNumber == accountNumber && x.LastUpdatedStatus != 1); }
And my best result so far (this cannot be compiled):
public IQueryable<IGrouping<Int32?, WebsiteOrderStatus>> lol(string accountNumber) { db.WebsiteOrderStatus .Where(x => x.AccountNumber == accountNumber && x.LastUpdatedStatus != 1) .GroupBy(g => g.ItemNumber) .Select(g => new { g.Key.ItemNumber, Column1 = (Int32?)g.Sum(p => p.Quantity) }); }
EDIT:
Thanks for all the answers, I have to meet him. It is quite difficult for you to work with anonymous types, in my opinion, so I found another solution.
I made another method that sums up the number of user elements and grouped the first one.
public IQueryable<WebsiteOrderStatus> GetOrderStatusByAccountNumberWithoutDeleted(string accountNumber) { return db.WebsiteOrderStatus.Where(x => x.AccountNumber == accountNumber && x.LastUpdatedStatus != 1).GroupBy(x => x.ItemNumber).Select(grp => grp.First()); } public int GetQuantityOfUsersItem(string accountNumber, string itemNumber) { return db.WebsiteOrderStatus.Where(x => x.ItemNumber == itemNumber && x.AccountNumber == accountNumber).Sum(x => x.Quantity); }
On the page where I have gridview, I did:
var query = websiteOrderStatusRep.GetOrderStatusByAccountNumberWithoutDeleted(AppSession.CurrentLoginTicket.AccountNumber).Select(x => new { x.ItemName, x.ItemNumber, x.FormatName, x.Price, x.Status, x.Levering, Quantity = websiteOrderStatusRep.GetQuantityOfUsersItem(x.AccountNumber, x.ItemNumber)});
c # linq
KLIM8D
source share