0

朝、このlinqステートメントにgroup byを含めたいと思います。持ち帰ったレコードの中には複数のエントリがあるため、productAsinでグループ化する必要があります。だから私は私のテーブルに重複を持っていません。

 var query = from a in dc.aProducts
                        join t in dc.tProducts on a.sku equals t.sku
                        join lp in dc.LowestPrices on a.asin equals lp.productAsin
                        orderby t.title
                        select new GetLowestPrices
                        {
                            productAsin = lp.productAsin,
                            sku = t.sku,
                            title = t.title,
                            tweprice = Convert.ToString(t.twePrice),
                            lowprice = Convert.ToString(lp.price),
                            amzprice = Convert.ToString(lp.tweAmzPrice),
                            lastupdated = Convert.ToDateTime(lp.priceDate)
                        };
            return query.ToList();

よろしくお願いします。

4

1 に答える 1

0

GroupBy拡張メソッドを使用します。

  var query = from a in dc.aProducts
                            join t in dc.tProducts on a.sku equals t.sku
                            join lp in dc.LowestPrices on a.asin equals lp.productAsin
                            orderby t.title
                            select new GetLowestPrices
                            {
                                productAsin = lp.productAsin,
                                sku = t.sku,
                                title = t.title,
                                tweprice = Convert.ToString(t.twePrice),
                                lowprice = Convert.ToString(lp.price),
                                amzprice = Convert.ToString(lp.tweAmzPrice),
                                lastupdated = Convert.ToDateTime(lp.priceDate)
                            };

    var groupedData = query.GroupBy(d => d.productAsin);
                return groupedData;

その後、そのグループ値にアクセスして、以下のようにそれらに集計関数を配置できます。

var groupedData = query.GroupBy(d => d.productAsin).Select( data => new {
productAsin = data.Key,
LowPriceSum = data.Sum(s => Convert.ToInt32(s.price))
}).ToList();

参照:
グループ句(C#リファレンス)
LINQGroupByの使用方法

于 2012-08-09T11:08:31.123 に答える