我有一个包含以下值的数组:
"admin", "superadmin", "user"
我尝试跳过仅等于“user”的值:
Roles.GetAllRoles().SkipWhile(v=>v.Equals("user"))
但结果仍然包含所有3个值。但是,如果我将“admin”放在Equals()中,结果将为:
"superadmin", "user"
如何只跳过“用户”?
提前致谢!
答案 0 :(得分:2)
答案 1 :(得分:2)
LINQ Skip方法只会跳过元素,直到找到与条件不匹配的元素。你想过滤清单吗?
Roles.GetAllRoles().Where(v=> !v.Equals("user"))
答案 2 :(得分:0)
我认为SkipWhile
在第一个元素admin
处被取消了。使用Where
代替:
Roles.GetAllRoles().Where(x=>x!="user");
如果您仍想使用SkipWhile
,则必须对列表进行排序,以便将user
的所有元素连续放在开头:
Roles.GetAllRoles().OrderBy(x => x != "user").SkipWhile(x=>x.Equals("user"))