对用户类型的泛型列表进行 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;
}
您可以使用 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);