-1

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

"admin", "superadmin", "user"

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

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

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

"superadmin", "user"

我怎样才能只跳过“用户”?

提前致谢!

4

3 回答 3

2

只使用Where怎么样

根据谓词过滤一系列值。

就像是

Roles.GetAllRoles().Where(v => !v.Equals("user"))
于 2013-07-29T03:40:32.640 回答
2

LINQ Skip 方法只会跳过元素,直到找到与条件不匹配的元素。您是否要过滤列表?

Roles.GetAllRoles().Where(v=> !v.Equals("user"))
于 2013-07-29T03:42:25.727 回答
0

我认为SkipWhile在第一个元素上就被取消了admin。像这样使用Where

Roles.GetAllRoles().Where(x=>x!="user");

如果还想使用SkipWhile,则必须对列表进行排序,以便 的所有元素user连续放置在开头:

Roles.GetAllRoles().OrderBy(x => x != "user").SkipWhile(x=>x.Equals("user"))
于 2013-07-29T03:44:31.687 回答