LINQ クエリで Contains(string) を Contains(string[]) に置き換える方法
LINQ では、Contains() メソッドを使用できます。コレクションに特定の要素が含まれているかどうかを確認するために使用されます。デフォルトでは、Contains() メソッドは単一の文字列パラメーターを受け取りますが、文字列の配列と比較する必要がある場合はどうすればよいですか?
質問:
次のような LINQ クエリ:
from xx in table where xx.uid.ToString().Contains(string[]) select xx
string[] 配列の値は数値 (例: 1、 45、20、10)。 Contains() メソッドを使用して、xx.uid プロパティ (数値) が配列内に存在するかどうかを確認したいと考えています。どうすればよいでしょうか?
答え:
xx.uid を文字列の配列と比較するには、Contains(string) メソッドを直接使用することはできません。代わりに、string[] 配列を Contains() メソッドをサポートするコレクションに変換する必要があります。ここでは 2 つのアプローチを示します。
string[] 配列を List
var uids = new List<string>(stringArray); var selected = table.Where(t => uids.Contains(t.uid.ToString()));
uid も整数の場合、string[] 配列を List
var uids = stringArray.Select(int.Parse).ToList(); var selected = table.Where(t => uids.Contains(t.uid));
拡張メソッド (オプション):
文字列[の拡張メソッドを作成することもできます。 ] 型を使用して、文字列引数を取る Contains() メソッドを提供します。
public static bool Contains(this string[] arr, string value) { return arr.Any(s => s == value); }
この拡張メソッドを使用すると、次のことができます。 string[] 配列で Contains() メソッドを直接使用します:
var selected = table.Where(t => stringArray.Contains(t.uid.ToString()));
以上がLINQ クエリで文字列配列で Contains() を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。