对用户类型的泛型列表进行 LINQ 查询

本文关键字:LINQ 查询 列表 泛型 用户 类型 | 更新日期: 2023-09-27 18:34:09

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

这是如何在 LINQ 中完成的?

谢谢

使用传统的 for 循环,我可以这样做:

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

对用户类型的泛型列表进行 LINQ 查询

您可以使用 Enumerable.Any ,它使用表达式 lambda(带 user => 的位)来指定用于测试每个用户的函数,并返回一个布尔值:

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

这具有(性能)优势,它不会枚举所有元素;一旦找到满足您指定条件的第一个元素,它就会纾困。

假设users包含用户的完整列表,并且tempName包含要过滤的名称,这将完成此操作:

var newUsers = users.Where(user => user.Name.Contains(tempName)).ToList()

看到使用传统 for 循环的编辑后,可以使用 LINQ 的任何扩展方法。

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

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