1

だから私は製品のクラスを持っています:

class Product{
    public int id;
    public int price;
    public string product_name;
}

var BoughtProductList = new List<Product>();
BoughtProductList .Add(new Product() { id = 1, price = 3 product_name = "orange" });
BoughtProductList .Add(new Product() { id = 2, price = 2 product_name = "apple" });
BoughtProductList .Add(new Product() { id = 2, price = 2 product_name = "apple" });
BoughtProductList .Add(new Product() { id = 3, price = 3 product_name = "banana" });

今度はテーブルに入れて、購入したすべての商品が表示されるようにしますが、アップル製品を2回見たくありません。linqでそのリストを調べ、そのクラスの新しいインスタンスを作成せずに、同じ製品IDを追加して、そのリストでそのリンゴを販売して得た金額を確認するにはどうすればよいですか。

4

3 に答える 3

5
from produce in BoughtProductList
group produce.price by new {produce.id, produce.product_name} into grp
select new{grp.id, grp.product_name, TotalPrice = grp.Sum()};
于 2012-08-21T13:43:37.680 に答える
1
var newBoughtProductList = new List<Product>();//create new list

for (int i = 0; i < BoughtProductList.Count; i++)//search old list
{
    Product currentProduct = BoughtListProduct[i];//get current product

    if (!newBoughtProductList.Contains(currentProduct)) //see if duplicate
        newBoughtProductList.Add(currentProduct);       //add product

    else 
    {
        int copyingProduct = BoughtProductList.FindIndex(currentProduct);
        //get duplicates index

        newBoughtProductList[copyingProduct].price += 
           newBoughtProductList[copyingProduct].price;//add to price of duplicate
    }
}

これは基本的にリストを検索し、重複を追加しません。次に、何かが重複している場合は、重複の価格だけ価格が上がります。注:これは使用しませんlinq(ただし、おそらくご存知でしょう)。これがお役に立てば幸いです。

于 2012-08-21T13:43:14.567 に答える
1

あなたがしたいのはGroupBy、製品のidプロパティでを実行することです。idこれを行うと、各グループからとを追加してproduct_name、それが区別されることを知ることができます。またSum、各グループの価格を超えて(または単にカウントに価格を掛けて)、その製品を販売して得た金額の合計を取得することもできます。

于 2012-08-21T13:39:06.700 に答える