そこにあるTSQLの専門家またはLINQ C#の専門家に質問があります。私はいくつかのテーブルに参加するストアドプロシージャを持っています。基本的に名前、ID、およそ10の製品列ストアドプロシージャは、多くのデータ(時には90,000行以上)を返すことができます。ストアドプロシージャでは、結果をフィルタリングして、その行のすべての製品が存在するすべての行をフィルタリングします。私が行う必要があるのは、列(製品)のすべての値がゼロであるC#の列を削除することです。これは、私のアプリケーション内のいくつかのビジネスルール(顧客要求)に起因します。SQLまたはC#の列を合計
アプリケーションは、列名の配列をレポートビルダーに送信することによって、列を削除(非表示)できます。例:
|名前| ID | Prod1 | Prod2 | Prod3 | Prod4 |
私はレポートからPROD3とProd4を削除したい場合は、次の
List<string> hideColumns = new List<string>();
hideColumns.Add("Prod3");
hideColumns.Add("Prod4");
と私はビルダーおよびそれらの列が除去されるレポートに hideColumns.ToArray() を送信します。
私のアプリケーションでは、すべてのデータを送信し、次のLINQを使用して、返されたデータの列の値を検索します。
var zeroCols = from result in data
group result by new { } into C
select new ProductDataClass
{
Prod1 = C.Sum(x => x.Prod1)
Prod2 = C.Sum(x => x.Prod2)
...etc to Prod10
};
if (zeroCols.Count() > 0)
{
if (zeroCols.First().Prod1 == 0)
hideColumns.Add("Prod1");
...etc to Prod10
}
である見つけるためにしかし、私の問題は、報告書は、多数の行を返す場合LINQは本当に遅いことです。誰でも提案をすることはできますか?
新しい{}によるグループ結果は何をしますか?それは私にとって新しいものです。 –