Tôi muốn nhóm truy vấn LINQ của mình theo số ItemNumber
và trả lại toàn bộ bảng với tổng số là Quantity
.Biểu thức Lambda Nhóm theo trong C#
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
Đây là truy vấn Tôi cố gắng để nhóm:
public IQueryable<WebsiteOrderStatus> GetOrderStatusByAccountNumberWithoutDeleted
(string accountNumber)
{
return db.WebsiteOrderStatus
.Where(x => x.AccountNumber == accountNumber && x.LastUpdatedStatus != 1);
}
Và kết quả tốt nhất của tôi cho đến nay (điều này không thể biên dịch mặc dù):
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:
Cảm ơn bạn đã trả lời tất cả mọi người, tôi phải đối mặt với nó. Các loại vô danh của người Theese khá khó làm việc theo ý kiến của tôi, vì vậy tôi đã tìm ra một giải pháp khác.
Tôi đã thực hiện một phương pháp khác, tính tổng số lượng các mục của người dùng và nhóm số lượng đầu tiên.
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);
}
Tại trang mà tôi có GridView của tôi, tôi đã làm:
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)});
Không chắc những gì khác là sai, nhưng ít nhất, bạn' lại thiếu một 'return' trong mẫu thứ hai. – Ani
Lỗi biên dịch bạn đang nhận được là gì? –
Có lẽ anh ấy đang cố coi g.Key là một đối tượng, trong khi đó chỉ là int. Nếu anh ta muốn tên mục trong kết quả thì anh ta cũng sẽ phải lưu nó trong đối tượng chính (và làm cho các phím trở thành một đối tượng có thể so sánh được) hoặc đọc nó từ mục nhập đầu tiên trong nhóm enumberator mà tôi đoán. – Rup