そのため、プロパティに基づいてコレクションから結果を取得しようとしています。リスト内にその値を保持する結果を取得したいです。
これは私のコードです
動的linqで試しました。動いていない
これは動的linqです。動かない
var list = new List<string>(2) { "11111", "22222" };
accounts = accounts.Where("@0.Contains(outerIt.PartnerCompanyId)", list);
これも機能していません
accounts = accounts .Where(a =>
a.PartnerCompanyId.Contains(list.Any().ToString()));
また、SQLに次のようなものを生成させたい
WHERE PartnerCompanyId IN (@gp1, @gp2, @gp3, …)
リストに複数の値がある場合でも、これを取得しています。パラメータのリストに同じ数の要素が必要です。
…WHERE PartnerCompanyId IN (@gp1)
これを達成する方法はありますか?
あなたの質問を正しく理解していれば、アカウントのリストがあり、アカウントに「list [0] OR list [1] OR list [2] ...」が含まれているかどうかを確認する必要があります。
Dynamic Linqを使用して同様の実装を動作させることができました。
コードをベースとして使用して、クエリを機能させるために私がしたことは次のとおりです。
List<string> list = new List<string>(2) { "11111", "22222" };
string argumentString = "";
for (int i = 0; i < list.Length; i++)
{
argumentString = argumentString + "@" + i;
argumentString = argumentString + ".Contains(outerIt.PartnerCompanyId)";
if (i != (list.Length - 1))
{
argumentString = argumentString + " or ";
}
}
var accounts = accounts.Where(argumentString, list.ToArray());
ループは文字列「@ 0.Contains(outerIt.PartnerCompanyId)または@ 1.Contains(outerIt.PartnerCompanyId)」を作成します
この文字列が作成されると、リスト内のすべてのアイテムをチェックするための簡単なLinqクエリが必要になります。
注:引数は配列ではなく配列で参照できますが、リストでは参照できません。ここに示されているようにhttps://stackoverflow.com/a/40885380/10253157
これがお役に立てば幸いです。同様のプロジェクトがあり、それを理解するのにかなり時間がかかりました。