2012-05-11 26 views
0

私は、商品コードの2文字の国コードを商品が販売された場所に記録する販売データベースを持っています。販売データベースには数量列はなく、基本的にすべての行は1つの販売と、その販売に関連する情報を表します。Linq to Entities Group

トップセールスの国を表示できるようになりました。ここで私が出ているLINQクエリです:

List<TopSellingCountries> tsc = (from sale in Sales 
           where sale.CountryCode != null 
           group sale by sale.CountryCode into cc 
           select new TopSellingCountries 
           { 
            CountryCode = cc.Select(c => c.CountryCode).FirstOrDefault(), 
            CountryCount = cc.Count() 
           }).OrderByDescending(c => c.CountryCount).Take(10).ToList(); 

私は、これはしかし、私のビューに、私は以下の情報を持つテーブルを取得出力:あなたはそれはdoesnの見ることができるように

CountryCode | CountryCount 
     US | 196 
     IE | 168 
     US | 99 
     GB | 91 
     IE | 57 
     AU | 32 
     GB | 22 
     AU | 18 
     CA | 17 
     CA | 17 

を国コードによって適切にグループ分けされているようです。どのように私はこれを克服することができる任意のアイデアを誰も持っています

EDIT:誰もがそれを必要とする場合ここで ビューからのコードです:

<table class="normal"> 
    <tr> 
     <th>Country Code</th> 
     <th>Country Count</th> 
    </tr> 
    <% foreach (var item in Model.TopSellingCountries) 
     { %> 
    <tr> 
     <td><%: item.CountryCode %></td> 
     <td><%: item.CountryCount %></td> 
    </tr> 
    <% } %> 
    </table> 
+1

のオフに余分なスペースをトリミングすることを確認してください?いくつかのレコードにスペースが残っている可能性はありますか? – cadrell0

+0

そうですね。私は調査する必要があります:Sコードが大丈夫だったことを確認したかっただけです。 – 109221793

+0

CountryCodeは単純な 'getですか?セット;それがより複雑で、同じオブジェクトから2回要求した場合の結果が異なる場合は、最初に修正する必要があります。 – hwcverwe

答えて

1

で試してみてください国番号のデータ型であるあなたが国番号

List<TopSellingCountries> tsc = (from sale in Sales 
           where sale.CountryCode != null 
           group sale by sale.CountryCode.Trim() into cc 
           select new TopSellingCountries 
           { 
            CountryCode = cc.Key, 
            CountryCount = cc.Count() 
           }) 
           .OrderByDescending(c => c.CountryCount) 
           .Take(10) 
           .ToList(); 
+0

優秀!ありがとう! – 109221793

1

使用

CountryCode = cc.Key, 

代わりの

CountryCode = cc.Select(c => c.CountryCode).FirstOrDefault(), 

また、国番号をトリミングする問題を防ぐことができますこのように:

ので:

group sale by sale.CountryCode.Trim() into cc 
+0

提案に感謝します。同じ結果を試しました:S – 109221793

+1

最初に出てきたものが、(パフォーマンスと可読性)まだ改善されていません。フィードバックありがとう – hwcverwe

0

List<TopSellingCountries> tsc = (from sale in Sales 
           where sale.CountryCode != null 
           group sale by sale.CountryCode into cc 
           order by cc.Count() descending 
           select new TopSellingCountries 
           { 
            CountryCode = cc.Key, 
            CountryCount = cc.Count() 
           }).Take(10).ToList(); 
+0

これは理にかなっていません。 10レコードしか得られないのは何ですか?なぜ10?注文の追加にはどんなメリットがありますか? – cadrell0

+0

@ cadrell0:更新​​コードがあります。それは現在実行可能ですか? – sarwar026

+0

申し訳ありませんが、私はordingまたは並べ替えint元のクエリに気付かなかった。私はスクロールしなければならなかったので、それらは切り取られました。 – cadrell0

関連する問題