制限する必要がある LINQ to SQL (DBML 経由) を使用していますが、問題が発生しています。動的 LINQ を使用して、エンド ユーザーが以前に決定した変数を送信しています。メインのdbテーブルとそれに接続する5つのテーブルからのデータを(左外部結合を介して)保持するdbにVIEWがあります。私は動的 LINQ を使用している (そしてそうしなければならない) ため、BD からの結果セットは .AsQueryable() である必要があり、IQueryable 結果セットを作成します。これが何をしているかの例です:
ビューが車の情報 (メーカー、モデル、年、色、走行距離、サービス記録) を保持しているとします。ユーザーが、今年整備されたすべてのフォード マスタングを見たいと入力した場合、結果セットはそのように返されます。
[uniqueID - 1][Ford][Mustang][1/1/2012](service date)
[uniqueID - 1][Ford][Mustang][2/1/2012](service date)
[uniqueID - 1][Ford][Mustang][3/1/2012](service date)
[uniqueID - 1][Ford][Mustang][4/1/2012](service date)
これは問題ありませんが、この特定のムスタングが今年 4 回サービスを受けたと仮定しましょう。
ただし、ユーザーがすべての黒のフォードを表示するだけの場合は、戻ってきます
[uniqueID - 1][Ford][Mustang]
[uniqueID - 1][Ford][Mustang]
[uniqueID - 1][Ford][Mustang]
[uniqueID - 1][Ford][Mustang]
[uniqueID - 2][Ford][Taurus]
サービスが null で、返される IQueryable に .Distinct() がある場合でも、サービスごとに行が返されます。
return data.Distinct().OrderBy(strOrderBy).Select("New(" + strItems + ")");
私ができる必要があるのは、その IQueryable を取得して、そこから個別の値を取得することです。入ってくる変数は動的であるため、これを行う方法がわかりません。