私は、ユーザーが入力した値に応じてデータベースを照会するものに取り組んでいます。 たとえば、ユーザーは国(おそらく「Au」)を検索でき、「Au」を含む国が返されます。リストに基づいたOrの数
問題は、この結果を達成するために述語に「or」ステートメントを追加する必要がありますが、それについてどう考えているかわかりません。
は今のところ、私は
List<int> ids;
ids = (from d in DTDC.Countries
where d.Name.ToLower().Contains(country.ToLower())
select d.CountryID).ToList();
var SearchPredicate = PredicateBuilder.True<DLC>();
// Example
searchPredicate = searchPredicate.And(c => c.CountryID == 0 || c.CountryID == 1);
は、だから私は私のLINQクエリから返されたリスト内の値に応じて
searchPredicate = searchPredicate.And(c => c.CountryID == 0 || c.CountryID == 1);
この文を生成する必要があります。例えば
リストは値0、1、7を持っている場合、クエリは
searchPredicate = searchPredicate.And(c => c.CountryID == 0 || c.CountryID == 1 || || c.CountryID == 7);
する必要がありますうまくいけば、私がやろうとしているかを理解するために誰かのために十分に明確なのthats :)
数字が必ずしも連続しているわけではないためです。たとえば、返される戻りIDはID 0と17です。つまり、 である必要があります。c => c.CountryID == 0 || c.CountryID == 17 私は1つのIDを扱うために別のものも持っています。私がここで探しているソリューションは複数のものです。 – Wraiyth
あなたが投稿のサイズに依存していると言ったとき、私はあなたの投稿を誤読しました。 c.CountryIDがidsで返された国のどこにあるかをフィルタリングしたいですか? – Rob
うん、まあまあ。したがって、リストには0,1,5,10という値が含まれていて、私のステートメントに含まれるすべての*が必要です。私が離れている限り、彼らはすべて個別の述語にする必要があります。各IDに1つを追加することはできません(少なくとも試しても機能しません) – Wraiyth