Linq-to-sql DataContextの基本パラメーターのセットを指定できますか?
-
07-07-2019 - |
質問
製品と価格の親子関係を表すLINQ-to-SQL DataContextがあります。製品のリストを反復処理し、各製品の価格を取得しています。問題は、製品と価格の両方の背後にあるテーブルに、3フィールドの複合キーによって決定される複数の環境の製品または価格のリストが含まれていることです。これらの環境の1つだけの製品と価格を取得したい。
これを行うには、プロダクトキーと複雑な環境キーで構成される各LINQクエリで、次のような長いwhere句を指定します。
var price = ( from condition in conditiontype where condition.MaterialNumber == material && condition.Client == "400" && condition.SalesOrg == "1000" && condition.DistributionChannel == "10" select condition.ConditionDetails[0].ConditionValue );
できることは、DataContextのClient、SalesOrg、DistributionChannelをグローバルに指定して、クエリ自体で指定する必要があるのは製品ID(MaterialNumber)だけにすることです。このようにして、実稼働環境のクエリを開始すると、DataContextを簡単に変更するだけで、クエリする環境が変更されます。
これは可能ですか?簡単なコードサンプルまたは背景理論へのポインタのいずれかが素晴らしいでしょう!
解決
事前に記述されたExpression<T>
を使用し、その中にこれらの値を含めることができます。
public Expression<Func<int>> GetPrices = p => // do Lambda here
別の方法として、プロパティをDataContextに入れて( partial クラスなので、簡単に拡張できる)設定して、式で読み込むことができます。
所属していません StackOverflow