2017-03-06 6 views
1

を数える:販売プロパティでLINQグループの文字列によると、私は以下のようなコードを書かれているグループ化されたプロパティの子プロパティ

SuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() > 0).Count(), 
UnSuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() == 0).Count(), 

することができますように:

Session["priceRange"] = ranges.Select(r => new PriceRangeGraph 
       { 
        Price = Math.Round(r, 2), 
        Sales = lista.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r).Sum(x => x.SaleNumber), 
        SuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() > 0).Count(), 
        UnSuccessfulSellers = lista.GroupBy(x => x.StoreName).Where(x => ranges.FirstOrDefault(y => y >= x.Select(z => z.SalePrice).FirstOrDefault()) == r && x.Select(h => h.SaleNumber).FirstOrDefault() == 0).Count(), 
       }).ToList(); 

これらは、2つのコードは問題のラインです商品が販売された価格帯を見つけて、その範囲内のすべての売上を単純に合計します

ここでは、成功した/失敗したユーザー(ユーザー名を持つユーザー)の数が、指定した範囲内で売上を達成した回数を確認しようとしています。

So for example user test123 made 5 sales, test1234 made 4 sales, test56 made 0 sales in range 0-20$ 

この範囲の出力には、次のようになります。

SuccessfulSellers=2 
UnSuccessfulSellers = 1 

私は試したことが、上記のコードは私のすべてで正しい結果が得られていません...

あなたは、私が「見ることができるようにユーザのユーザ名でグルーピングして出現番号を取得し、ユーザが販売を行った範囲をフィルタリングし、次に別の文と文を追加して、売上高が0の人と0人以上の人を除外するだけです。

私はここで何が間違っていますか?

+0

誰でもみんな? =) – User987

+1

あなたのモデルが何であるか( 'ranges'と' lista')、そしておそらくいくつかのサンプルレコードと結果が期待されるものについてもっと詳しく知ることができます –

答えて

1

あなたの問題は、操作の順序の1つだと思います。グループ化すると、実際ははるかに複雑なデータ構造(リストのリスト)を扱うことになります。あなたのフィルターの後まであなたのグループを保存して、あなたの人生ははるかに簡単になります。例えば

allSales.Where(m => m.Price >= 0 && m.Price <= 20) 
    .GroupBy(m => m.User) 
    .Select(m => new { User = m.Key, Sales = m.Count() }); 
+0

Chris、私は実際に到達範囲= (..私が書いた既存のクエリにこのロジックを組み込む方法はありますか? – User987

関連する問題