J'ai besoin d'aide pour ajouter des conditions à une requête linq.Regroupement LINQ par et création d'une formule basée sur les résultats retournés
Prenez ce petit exemple
static void Main(string[] args)
{
List<ItemEntry> items = new List<ItemEntry>();
items.Add(new ItemEntry(1,1,5,1));
items.Add(new ItemEntry(2, 1, 5, 1));
items.Add(new ItemEntry(3, 1, 5, 1));
items.Add(new ItemEntry(4, 1, 10, 3));
items.Add(new ItemEntry(5, 2, 5, 1));
items.Add(new ItemEntry(6, 2, 5, 1));
items.Add(new ItemEntry(7, 2, 5, 1));
items.Add(new ItemEntry(8, 2, 5, 1));
items.Add(new ItemEntry(9, 2, 5, 2));
items.Add(new ItemEntry(10, 2, 5, 2));
var results = from data in items
group data by data.ItemTypeID
into grouped
select new { ItemID = grouped.Key, ItemPrice = grouped.Sum(data => data.ItemPrice) };
foreach (var item in results)
{
Console.WriteLine(item.ItemID + " " + item.ItemPrice);
}
Console.ReadLine();
}
}
public class ItemEntry
{
public int ItemID { get; set; }
public int ItemTypeID { get; set; }
public double ItemPrice { get; set; }
public int ProcessedType { get; set; }
public ItemEntry(int itemID, int itemTypeID,double itemPrice, int processedType)
{
ItemID = itemID;
ItemTypeID = itemTypeID;
ItemPrice = itemPrice;
ProcessedType = processedType;
}
}
je groupe ItemTypeID puis en créant une somme basée sur le groupe qui est bien. Je dois maintenant ajouter 2 conditions supplémentaires. Je veux garder le même groupement mais je veux faire la même chose seulement si ProcessedType == 1 si ses types 2 ou 3 alors je veux les totaliser et ensuite le diminuer le total groupé.
par exemple. Je vais utiliser ItemTypeID 1 Si je total de tous ProcessedType 1 Je reçois 15 et si je total ProcessedType3 je 10 donc je veux revenir 5.
Je ne sais pas comment ajouter la condition dans mon code.
Toute aide serait géniale !!!
TIA
H Kirk merci pour votre réponse. Cela a fonctionné un rêve :) –
Désolé une autre question. Au lieu d'utiliser une liste générique pour obtenir les valeurs de si je veux utiliser LINQ-SQL. En supposant que tous les champs ont le même nom, je n'ai pas le champ TotalModifier dans la base de données. Désolé je suis assez nouveau à linq –