草庐IT

lambda表达式

全部标签

c# - 为什么 lambda 中的短路不起作用?

为什么linq仍然要检查第二个表达式?.Where(t=>String.IsNullOrEmpty(someNullString)||t.SomeProperty>=Convert.ToDecimal(someNullstring))通常的解决方法是什么?更新:当然,它是关于LINQtoSQL的。它无法转换为SQL。 最佳答案 是.Where在Table上使用?如果是这样,那么在获取任何数据之前,它必须将LINQ转换为SQL,为此它必须转换string进入decimal.它还没有尝试实际执行比较,它正在尝试构建检索数据所需的结构。

c# - C#中的正则表达式运行缓慢

过去一周我一直在用正则表达式做一些工作并取得了很大的进步,但是,我仍然相当n00b。我有一个用C#编写的正则表达式:stringisMethodRegex=@"\b(public|private|internal|protected)?\s*(static|virtual|abstract)?"+@"\s*(?[a-zA-Z\_1-9]*)\s(?[a-zA-Z\_1-9]+)\s*\"+@"((?(([a-zA-Z\[\]\_1-9]*\s*[a-zA-Z_1-9]*\s*)[,]?\s*)+)\)";IsMethodRegex=newRegex(isMethodRegex);出于某

c# - 在 Roslyn 分析器中检查表达式类型的正确方法?

我正在使用Roslyn编写代码分析器,我需要检查是否有ExpressionSyntax类型为Task或Task.到目前为止我有这个:privatestaticboolIsTask(ExpressionSyntaxexpression,SyntaxNodeAnalysisContextcontext){vartype=context.SemanticModel.GetTypeInfo(expression).Type;if(type==null)returnfalse;if(type.Equals(context.SemanticModel.Compilation.GetTypeByMe

C# 正则表达式 : Named Group Valid Characters?

什么是有效的组名?varre=newRegex(@"(?pattern)"); 最佳答案 简答允许的字符是[a-zA-Z0-9_]长答案根据Microsoftdocs:namemustnotcontainanypunctuationcharactersandcannotbeginwithanumber.不过说的不是很具体,还是看源码吧:sourcecodefortheclassSystem.Text.RegularExpressions.RegexParser向我们展示了允许的字符本质上是[a-zA-Z0-9_]。确切地说,在用于检

c# - 表达式树 - 不必要的转换为 int32

在处理字节和短裤时,表达式树似乎构建了一个不必要的转换,它们将两边(例如二进制表达式)转换为int32。这是我见过的一些Linq提供程序中的一个问题,每个提供程序都必须剥离这个冗余层才能获得原始表达式。(NHibernate不会删除这一层并在SQL查询中创建一个糟糕的CAST)。//noconversionConsole.WriteLine((Expression>)((s,s1)=>s==s1));//convertstoint32Console.WriteLine((Expression>)((s,s1)=>s==s1));//convertstoint32Console.Writ

c# - 当类型仅在运行时已知时,如何使用表达式树调用泛型方法?

这是我使用反射解决的问题,但我想看看如何使用表达式树来解决。我有一个通用函数:privatevoidDoSomeThing(paramobject[]args){//Someworkisdonehere.}我需要从我类的其他地方打电话。现在,通常这很简单:DoSomeThing(blah);但前提是我在设计时知道我正在使用int。当我不知道类型直到运行时是我需要帮助的地方。就像我说的,我知道如何通过反射来做到这一点,但我想通过表达式树来做到这一点,因为我(非常有限)的理解是我可以这样做。有什么建议或指向我可以获得这种理解的网站,最好是示例代码? 最佳答案

c# - 如何在 AWS Lambda C# 实现中使用依赖注入(inject)

我使用AWS.NetSDK、.net核心版本1.0创建了Lambda函数。我想实现依赖注入(inject)。由于lambda函数在AWS环境中独立触发和运行,因此不存在像Startup这样的类。如何以及在何处配置我的容器以实现此实现? 最佳答案 我知道我来晚了,但我添加这个是因为我相信互联网上有一些不好的/缺少的例子。@Erndob关于已接受的答案是正确的。您只会创建更多实例。根据您在DI容器中进行的注册,您需要牢记:你在做什么注册以实现IDisposableAWS将您的对象实例保存多长时间。我找不到任何关于此的文档。结束了这样的事

c# - 委托(delegate)、Lambda 和 LINQ,我的天哪!

作为一名相当初级的开发人员,我遇到了一个问题,它凸显了我缺乏经验和知识上的漏洞。如果这里的序言太长,请原谅。我发现自己在一个项目中需要学习许多(对我来说)新技术,包括LINQ(为了这个项目的目的,到OBJECTS和XML)等等。到目前为止我读到的所有内容都表明,要使用LINQ,我需要完全理解以下内容(委托(delegate)、匿名方法和Lambda表达式)。好的,现在有趣的来了。我过去使用.NET事件模型时使用过委托(delegate),但大部分细节对我来说是隐藏的(感谢Microsoft!)。我知道在基本层面上,委托(delegate)实例是指向方法的指针(我知道这是一种严重的过度简

c# - 为多行 lambda 创建表达式树的 Roslyn 流畅语法

我正在编写一个基于Roslyn的自定义工具,试图根除CS0834通过在构建时将给定的多行lambda重写为表达式树。编辑:此时,我只针对匿名多行lambda。例如://WillproduceCS0834ifBartakesExpression>Foo.Bar((intx)=>{...});到Foo.Bar(Expression.Lambda>(Expression.Block(...),Expression.Parameter(typeof(int))));这样就可以正确编译了。虽然我可以弄清楚转换给定代码所需的Expression.(blah)语法,但使用Roslyn完成它完全是另一

c# - C# 7.0 中的表达式主体获取/设置访问器功能

我在类里面有这段代码privatestringtest;publicstringTest{get=>test;set=>test=value;}但是编译器不让我编译。它说CS1043{or;expectedCS1513}expected我正在使用VS2017并使用MVC5项目定位.NETFW4.6知道为什么它不起作用吗? 最佳答案 您必须在项目中将编译器设置为版本7。项目属性→(选项卡)构建→高级→语言版本=C#7.0由@gsharp更新同时检查您对.NET编译器平台Microsoft.Net.Compilers的(NuGet)引用