0

我希望搜索一个名为的字符串tempName是否已包含在用户对象列表中。这些类型的用户对象userClass包含一个字符串数据方法Name,我想检查它的值tempName

这是如何在 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 回答