Linq文でWhere句として使用される4つの共通要素(startDate、endDate、CompanyID、StoreID)を共有するダッシュボードを作成しました。同じLinq結果に対して複数のLinqクエリを実行する
var dashboardEntity = new BlueStreakSalesDWEntities();
//Get Total Sales
ViewBag.companySalesTotal = dashboardEntity.FactSales.Where(d => d.DateKey >= startDate)
.Where(d => d.DateKey <= endDate)
.Where(c => c.CompanyID == companyID)
.Sum(a => a.Amount);
//get list of all items sold
var companyStoreTotalItem = dashboardEntity.FactSales.Where(d => d.DateKey >= startDate)
.Where(d => d.DateKey <= endDate)
.Where(c => c.CompanyID == companyID).GroupBy(m => new { m.Description })
.Select(g => new DescriptionAmountModel { Amount = g.Sum(a => a.Amount).Value, Description = g.Key.Description })
.OrderByDescending(x => x.Amount);
I:その文の結果は、その後、ここでは、現在起こっているの重複を示すための短いsnippitあるグループにさまざまな方法で照会し、データをソートし、チャート、リストなどに使用されていますダッシュボード上でこれらの呼び出しの15のようなしていると私は想像しているときから非常に遅くなることができます複数の呼び出しが実際には、データベースは一度問い合わせる必要がある結果は異なる結果を照会する必要があります。
どうすればいいですか?
すべてのヘルプは大幅に各クエリが同じデータに、separatly実行あなたの現在のソリューションでは
ありがとうございますこれはもっと意味があります。 – Nate58
@NateGreene - あなたは歓迎です:)あなたは、 'Where'関数に' && '演算子を使って' where'条件をすべて入れることもできます。全く同じSQLに変換されますが、少しきれいに見えるかもしれません –
エンティティ・フレームワーク・タスクを単一のコンテキストに対して並列に実行することはできません。非同期/待機待ちのタスクを使用してメモリエンティティでクエリを実行しても、何も得られません。 –