为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 LINQ 的 where 子句中更新全局变量?

如何在 LINQ 的 where 子句中更新全局变量?

C#
森栏 2022-12-31 11:38:34
由于您对问题的描述有限,我已经设置了一个演示应用程序,我在其中实现OAuthAuthorizationServerProvider为 Provider forOAuthAuthorizationServerOptions和 override GrantResourceOwnerCredentialsandValidateClientAuthentication  public void Configuration(IAppBuilder app)    {        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions        {            Provider = new ApplicationOAuthBearerAuthenticationProvider()        });        app.Use<AuthenticationResponseMiddleware>();        var options = new OAuthAuthorizationServerOptions        {            AllowInsecureHttp = true,            TokenEndpointPath = new PathString("/api/xxxx"),            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),             Provider = new OwinAuthorisationProvider()        };        app.UseOAuthAuthorizationServer(options);    }还尝试AuthorizeAttribute在配置类中自定义并添加为过滤器.Filters.Add(new AuthorizeAttribute());在AuthenticationResponseMiddleware我继承OwinMiddleware的public override async Task Invoke(IOwinContext context)方法中,请检查请求的流程。它OAuthBearerAuthenticationProvider首先在RequestToken方法中命中,然后在OwinMiddleware类中命中,在进入任何 DelegatingHandler管道之前,大部分身份验证都是在此层中实现的。检查后请评论您的发现,同时我也修改API并更新您,希望它可以帮助您。
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

只需调用ToArray()或ToList()实际执行设置的代码flag:


var newList = list.Where(item =>

{

    flag = true;

    return item == "2";

}).ToArray();

Where在实际枚举列表之前,不会评估传递给方法的谓词。


查看完整回答
反对 回复 2022-12-31
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

Linq 查询是惰性的,所以在您枚举 newList 之前,您不会看到任何变化,因为您的 where 尚未执行。


var list = new List<string> { "1", "2", "3", "4", "5" };


bool flag = false;

var newList = list.Where(item =>

{

    flag = true;

    return item == "2";

});


Console.WriteLine(flag); // Flag is still false.


foreach (var item in newList) {

  // It doesn't matter what we do here, just that we enumerate the list.

}


Console.Write(flag); // Flag is now true.

foreach 导致执行位置并设置您的标志。


顺便说一句,我真的建议不要使用 where 谓词来产生副作用,但这就是你要做的。


查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号