使用LINQ变量脱离上下文

san*_*p22 -1 c# linq

如何在块中使用"x"变量?如果statement为true,我想返回x的Id字段.

if (UserList.Any(x => x.Type == (int)UserType.SuperUser))
{
    return x.Id;
}
Run Code Online (Sandbox Code Playgroud)

Céd*_*non 5

您无法访问lambda表达式之外的"LINQ变量".

你想要做的是获得满足条件Id的任何元素的属性.xx.Type == (int)UserType.SuperUser

在这种情况下,请替换你Any()FirstOrDefault().

var item = UserList.FirstOrDefault(x => x.Type == (int)UserType.SuperUser);
if(item != null)
    return item.Id;
Run Code Online (Sandbox Code Playgroud)

FirstOrDefault(x => condition on x)返回null满足条件的第一个元素,如果没有元素满足条件.

如果要获取Id满足条件的所有元素的值,请使用WhereSelectextention方法:

return UserList.Where(x => x.Type == (int)UserType.SuperUser).Select(x => x.Id);
Run Code Online (Sandbox Code Playgroud)

Where(x => condition(x))IEnumerable如果您希望获得"正常"列表,则返回包含满足条件的所有元素,ToList()之前添加;.