私は継承した古代のコードを書き直しています。大きなテーブルで大規模な結合を実行するクエリを見ていて、その結果のテーブルで一連のグループ化アクションを実行して、データ:1回の往復で、1つのLinQからSQL式に複数の結果を返すにはどうすればよいですか?
INSERT INTO #teh_temp_table
SELECT * FROM teh_large_table
INNER JOIN teh_other_large_table
SELECT customer_id, customer_name FROM * #teh_temp_table
GROUP BY customer_id, customer_name
ORDER BY customer_name
SELECT city_id, city_name FROM * #teh_temp_table
GROUP BY city_id, city_name
ORDER BY city_name
-- repeated n-2 times ...
この大規模なSQL文がADO.NET SqlCommandオブジェクトとDBサーバに送信され、データが1つのネットワーク・ラウンドトリップでのn別の結果として返されます。
これをLinQからSQLに変換するのは難しいです。私は次のようなことをやろうとしています:
from tlt in teh_large_table
join tolt in teh_other_large_table on tlt.pkey equals tolt.fkey into teh_temp_table
from tmp in teh_temp_Table
group tmp by new { tmp.customer_id, tmp.customer_name } into customers
from tmp in teh_temp_table
group tmp by new { tmp.city_id, tmp.city_name } into cities
select new { customers, cities }
コンパイラは文句を言っています。単一のネットワーク往復で、データを取得するだけでなくそれを返す同等のLinQクエリを発行する方法はありますか?あなたが想像しているように、私はその厄介な参加を2回以上したいとは思わない。