2016-08-22 17 views
4

LINQにはかなり新しく、私がやろうとしていることは簡単にするべきだと思います。私は製品リスト(ProductIdProductDesc)を持っており、そのリストのサブセットを取り出し、それをProductIdでグループ化しようとしています。そこから、そのサブセットをlistViewにバインドしたいと思います。LINQ Select and Group By

productCounts = (from record in wowReportData 
       group record by record.ProductID 
       into grouping 
       orderby grouping.Key 
       select new topProduct 
       { 
        ProductID = grouping.Key, 
        Quantity = grouping.Count(), 
        Name = grouping. 
       }).ToList(); 

、ここでは、私が移入しようとしているクラスです:

public class topProduct 
{ 
    public string ProductID { get; set; } 
    public int Quantity { get; set; } 
    public string Name { get; set; } 

    public topProduct() { } 

    public topProduct(string productId, string productDesc, int downloadCount) 
    { 
     this.ProductID = productId; 
     this.Name = productDesc; 
     this.Quantity = downloadCount; 
    } 
} 

私はそれだけでproductIdを表示すると正常に動作し、カウントが、私は必要としていたここで私が働いているクエリですディスプレイに説明を追加することもできます。私はグループ化をしているときに製品の説明を追加する方法については混乱しています。

+1

を '命名について見てください'ProductID'でグループ化された' wowReportData'のリストです。名前が 'wowReportData'の一部であれば' grouping.First()。Name'を実行できますが、 'Name'に配置したいものがわからない場合 –

答えて

4

私はあなたがそのために2つのフィールドでグループ化したいだけ1名が各ProductIdのためにそこにあることを前提としています

productCounts = (from record in wowReportData 
       group record by new { record.ProductID, record.Name } into grouping 
       orderby grouping.Key.ProductID 
       select new topProduct 
       { 
        ProductID = grouping.Key.ProductID, 
        Quantity = grouping.Count(), 
        Name = grouping.Key.Name 
       }).ToList(); 

が一致しない場合は、その後FirstOrDefaultを使用し、それを選択する方法を指定


また、C#の程度少しだけ - grouping`がある規則herehere

+1

人、ありがとう、それでした。素晴らしい月曜日があります! – TrevorGoodchild

+0

@TrevorGoodchildあなたも大歓迎です:) –

+0

話が早すぎて、デザインタイムエラーは発生しませんが、productCountsには何も入力されていません。これをTopProductオブジェクトのリストにキャストする必要がありますか? – TrevorGoodchild