LINQ查询用户类型的通用列表

时间:2012-05-14 11:30:07

标签: c# linq

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

在LINQ中如何完成?

感谢

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

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

假设users包含完整的用户列表,而tempName包含您要过滤的名称,则可以执行此操作:

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

答案 2 :(得分:1)

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

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

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