0

tempName呼び出された文字列がすでにユーザーオブジェクトのリストに含まれているかどうかを検索したいと思います。これらのタイプのユーザーオブジェクトには、値をチェックしたいuserClass文字列データメソッドが含まれています。NametempName

これはLINQでどのように行われますか?

ありがとう

従来のforループを使用すると、次のように実行できます。

bool already = false;
for (int i = 0; i < userList.Count; i++)
{
    if (Name == userList[i].name) 
        already = true;
}
4

3 に答える 3

3

を使用できますEnumerable.Any。これは、式lambda(のビットuser =>)を使用して、各ユーザーのテストに使用される関数を指定し、ブール値を返します。

string name = "the name you're searching for";
bool already = userList.Any(user => user.Name.Contains(name));

これには、すべての要素を列挙しないという(パフォーマンス)利点があります。指定した条件を満たす最初の要素が見つかると、ベイルアウトします。

于 2012-05-14T11:34:38.330 に答える
2

usersユーザーの完全なリストが含まれ、フィルタリングする名前が含まれていると仮定するとtempName、次のようになります。

var newUsers = users.Where(user => user.Name.Contains(tempName)).ToList()
于 2012-05-14T11:32:11.277 に答える
1

従来のforループの使用を編集した後、LINQの任意の拡張メソッドを使用できます。

bool already = userList.Where(x => Name == x.Name).Any();

また

bool already = userList.Any(x => Name == x.Name);
于 2012-05-14T11:41:15.283 に答える