ホームページ >バックエンド開発 >C++ >LINQ クエリで文字列配列で Contains() を使用する方法

LINQ クエリで文字列配列で Contains() を使用する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 07:19:09120ブラウズ

How to Use Contains() with a String Array in LINQ Queries?

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 つのアプローチを示します。

  1. List の使用:

string[] 配列を List に変換します。次に、リストに対して Contains() メソッドを使用します。

var uids = new List<string>(stringArray);
var selected = table.Where(t => uids.Contains(t.uid.ToString()));
  1. リストの使用 (uid も int の場合):

uid も整数の場合、string[] 配列を List に変換できます。次に、リストの Contains() メソッドを使用します:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。