使用LINQ,IEnumerable顺序跳过特定值?

时间:2013-07-29 03:35:25

标签: c# linq

我有一个包含以下值的数组:

"admin", "superadmin", "user"

我尝试跳过仅等于“user”的值:

Roles.GetAllRoles().SkipWhile(v=>v.Equals("user"))

但结果仍然包含所有3个值。但是,如果我将“admin”放在Equals()中,结果将为:

"superadmin", "user"

如何只跳过“用户”?

提前致谢!

3 个答案:

答案 0 :(得分:2)

如何使用Where

  

根据谓词过滤一系列值。

这样的东西
Roles.GetAllRoles().Where(v => !v.Equals("user"))

答案 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"))