Linq where 条件不起作用

Sma*_*EGA 0 .net c# linq

我正在尝试过滤所有姓氏“Peter”

但它不过滤而是列出没有过滤器的所有行

我做错了什么?

if (pagedCollection != null)
{
    do
    {
        List<IUser> usersList = pagedCollection.CurrentPage.ToList();

        usersList.Where(x => !string.IsNullOrEmpty(x.Surname) && x.Surname.Contains("Peter")).FirstOrDefault();

        foreach (IUser user in usersList)
        {
            userList.Add((User) user);
        }
        pagedCollection = await pagedCollection.GetNextPageAsync();
    } 
    while (pagedCollection != null);
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 5

此行返回包含 的单个用户,因为:SurName"Peter"FirstOrDefault

usersList.Where(x => !string.IsNullOrEmpty(x.Surname) && x.Surname.Contains("Peter")).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但您不会将结果存储在任何地方。它不会“过滤”原始列表,如下所示:

usersList = usersList 
    .Where(x => !string.IsNullOrEmpty(x.Surname) && x.Surname.Contains("Peter"))
    .ToList();
Run Code Online (Sandbox Code Playgroud)

实际上这个查询也不会过滤原始列表,而是创建一个新列表,最后将这个新列表重新分配给旧变量。所以效果和过滤类似。