1

こんにちは、リストがあり、重複をグループ化し、その数量を追加して最大数量と比較しようとしています。私が直面している唯一の問題は、重複を分離してその数量を追加することです。私はメンタルブロックに陥り、自分がしようとしていることを達成するための正しい方法を理解できません. だから、誰かが私を正しい方向に向けて助けてくれることを望んでいました!

重複をチェックしているプロパティは ProductID です

double qty = 0;
double totalQty = 0;
bool isQtyValid = true;

List<ShoppingCartDTO> shoppingList = ShoppingCart.Fetch(string.Format("WHERE SessionID='{0}'", Session["ID"]));
    foreach (ShoppingCartDTO temp in shoppingList)
    {
        qty =  temp.Quantity;
        totalQty += qty;
        isQtyValid = getCheckQty(totalQty, temp.ProuductID, temp.CustomerID);
        CheckOut.Enabled = isQtyValid;
        lblError.Visible = !isQtyValid;
    }

より多くの説明ができる場合は、より良い説明を試み、必要に応じてより多くのコードを提供することができます。誰のアドバイスや助けにも感謝します。ありがとう!

4

5 に答える 5

0

私があなたを正しく理解していれば:

var groupedList = shoppingList.GroupBy( item => item.[the property you want to group by on]);

foreach (var g in groupedList)
{
   var sum = g.Sum( i => i.[the property you want to sum]);
}

それが役に立てば幸い

于 2013-03-28T15:43:54.447 に答える
0

次のようなことができます。

var groups = shoppingList.GroupBy(e => e.ProductId).ToList();
shoppingList.Clear();
foreach (var group in groups)
{
    group.First().Quantity = group.Sum(e => e.Quantity);
    shoppingList.Add(group.First());
}

これが実行された後、shoppingList重複は含まれずQuantity、すべての重複の値が合計されます。

于 2013-03-28T15:48:51.707 に答える
0

古いスタイルのソリューションのようなものです。

List<ShoppingCartDTO> shoppingList = ShoppingCart.Fetch(string.Format("WHERE SessionID='{0}'", Session["ID"]));
    Dictionary<String, Double> groups = new Dictionary<String,Double>();
    foreach (ShoppingCartDTO temp in shoppingList)
    {
        String key = String.Format("{0}-{1}", temp.CustomnerID, temp.ProductID); 
        if (groups.ContainsKey(key))
        {
           groups[key] += temp.Quantity;
        }
        else
        {
           groups.Add(key, temp.Quantity);
        }
    }
于 2013-03-28T15:48:03.140 に答える
0

次のような「重複」を定義するプロパティがあると仮定しますProductId

var results = shoppingList.GroupBy(s => s.ProductID)
                          .Select(g => new {
                                               ProductID = g.Key,
                                               totalQty = g.Sum(I => i.Quantity)
                                           }
                                 );
于 2013-03-28T15:48:12.860 に答える
0
A.Intersect(B).Count;

これは重複アイテム数を見つけることができますか? ShoppingCartDTO クラスに IEquatable インターフェイスを実装することもできます。

class ShoppingCartDTO : IEquatable<ShoppingCartDTO>
{
}
于 2013-03-28T15:38:43.737 に答える