DBに接続してEntityFrameworkを使用して顧客のデータを取得するwcfアプリケーションを作成しています。コンセプトは、検索パラメータに基づいて顧客を検索することです。ユーザーは、検索パラメーターのすべてまたは少数、あるいは少なくとも1つを指定できます。しかし、私はEntity Frameworkにまったく慣れておらず、これを行う方法について混乱しています。これは、従来のSQLコーディングで、c#側のIf-Else条件を考慮することで実行できます。
これは、すべてのパラメーターを取得している私のコードです。
var customers = from o in natCustomer.CustomerLists
select o;
customers = customers.Where(c => c.Name == sName && c.Age == iAge
&& c.Gender == sGender && c.Height == dHeight && c.Weight == dWeight
&& c.Nationality == sNationality
&& c.EyeColor == sEyeColor && c.SpecialMark == sSpecialMark);
少数または1つのパラメーターのみで結果を取得する方法を提案してください。ありがとう
Entity Frameworkクエリは、「遅延」クエリです。結果を求め始めるまで、実際には実行されません。これは、クエリを分割して構築でき、(ほとんどの場合)1つの大きなクエリとまったく同じように機能することを意味します。
あなたの場合、あなたは次のようなことをすることができます:
var customers = from o in natCustomer.CustomerLists
select o;
if (!string.isNullOrEmpty(sName))
customers = customers.Where(c => c.Name == sName);
if (!string.isNullOrEmpty(sNationality))
customers = customers.Where(c => c.sNationality == sNationality);
if (!string.isNullOrEmpty(SpecialMark ))
customers = customers.Where(c => c.SpecialMark == SpecialMark);
最後に、customers
クエリを実行すると(たとえば、呼び出しToList
やforeach
ループの使用)、EFはこれらの小さなWhere
句をすべて1つのSQLクエリに統合して、データに対して実行します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加