我有一个包含以下值的数组:
"admin", "superadmin", "user"
我尝试跳过仅等于“用户”的值:
Roles.GetAllRoles().SkipWhile(v=>v.Equals("user"))
但结果仍然包含所有 3 个值。但是,如果我在 Equals() 中输入“admin”,结果将是:
"superadmin", "user"
我怎样才能只跳过“用户”?
提前致谢!
LINQ Skip 方法只会跳过元素,直到找到与条件不匹配的元素。您是否要过滤列表?
Roles.GetAllRoles().Where(v=> !v.Equals("user"))
我认为SkipWhile
在第一个元素上就被取消了admin
。像这样使用Where
:
Roles.GetAllRoles().Where(x=>x!="user");
如果还想使用SkipWhile
,则必须对列表进行排序,以便 的所有元素user
连续放置在开头:
Roles.GetAllRoles().OrderBy(x => x != "user").SkipWhile(x=>x.Equals("user"))