Expression Lambda Groupe par en C#

J'aimerais groupe de ma requête LINQ par ItemNumber et de retourner l'ensemble de la table avec le total de 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

C'est la requête que je suis en train de groupe:

public IQueryable<WebsiteOrderStatus> GetOrderStatusByAccountNumberWithoutDeleted
        (string accountNumber)
{
    return db.WebsiteOrderStatus
             .Where(x => x.AccountNumber == accountNumber && x.LastUpdatedStatus != 1);
}

Et mon meilleur résultat jusqu'à présent(cela ne peut pas compiler tout de même):

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:

Merci pour les réponses à tout le monde, je dois faire face. Ces types anonymes sont assez difficile à travailler, à mon avis, j'ai donc trouvé une autre solution.

J'ai fait une autre méthode, qui est la synthèse de la quantité des utilisateurs éléments et les regroupements de la première.

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);
}

À la page où j'ai ma gridview j'ai fait:

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)});
Pas sûr de ce que les autres ont tort, mais à tout le moins, vous êtes absent un return dans le deuxième échantillon.
Quel est le message d'erreur de compilation que vous obtenez?
Probablement qu'il essaie de traiter g.Clé comme un objet, alors que c'est juste de l'int. Si il veut que le nom de l'élément dans le résultat, alors il y aura également de le stocker dans l'objet clé (et de rendre les clés d'un objet qui est comparable) ou lire à partir de la première entrée dans le groupe enumberator, je suppose.

OriginalL'auteur KLIM8D | 2012-01-24