草庐IT

lambda表达式

全部标签

c# - 模拟 IRavenQueryable 并附加 Where() 表达式

我正在尝试为一个新的mvc3项目做一些基本的概念类型代码证明。我们将Moq与RavenDB结合使用。行动:publicActionResultIndex(stringid){varmodel=DocumentSession.Query().Where(f=>f.ResponsibleBusinessId==id);returnView(model);}测试:privatereadonlyFixture_fixture=newFixture();[Test]publicvoidIndex_Action_Returns_List_Of_FinancialTransactions_For_B

c# - 动态添加新的 lambda 表达式以创建过滤器

我需要对ObjectSet进行一些过滤以获得我需要的实体:query=this.ObjectSet.Where(x=>x.TypeId==3);//thisisjustanexample;在代码的后面(在启动延迟执行之前)我再次像这样过滤查询:query=query.Where();到目前为止效果很好。这是我的问题:实体包含一个DateFrom属性和一个DateTo属性,它们都是DataTime类型。它们代表一个时间段。我需要过滤实体以仅获取属于时间段的集合的实体。集合中的句点不一定是连续的,因此,检索实体的逻辑如下所示:entities.Where(x=>x.DateFrom>=Pe

c# - 在 C# 中使用正则表达式匹配 a^n b^n c^n (例如 “aaabbbccc” )

您可以轻松地使用正则表达式来验证常规语言。我的问题是你能用它来验证上下文相关的语言吗?层次结构中的现代正则表达式有多强大?您将如何创建一个正则表达式来检查匹配a^nb^nc^n的字符串?以下情况应该匹配:abcaabbccaaabbbccc以下情况不应匹配:abbcaabbcaabbbccc 最佳答案 .NET提供balancinggroups你应该能够使用它来做到这一点;像这样的东西:^(?(?a))*(?b)*(?c)*(?(n)(?!))(?(o)(?!))$为每个a递增n和o,为每个b递减n>然后是每个c的o,如果任一计数器

c# - 捕获从异步 lambda 抛出的异常

我正在尝试编写一个方法来尝试执行一个操作,但会吞下引发的任何异常。我的第一次尝试如下:publicstaticvoidSafeExecute(ActionactionThatMayThrowException){try{actionThatMayThrowException();}catch{//noop}}在使用同步操作调用时有效:SafeExecute(()=>{thrownewException();});但是当使用异步操作调用时失败:SafeExecute(async()=>{awaitTask.FromResult(0);thrownewException();});是否可以

c# - 将动态表达式传递给代码优先 EF 存储库中的排序依据

我们编写了一个通用函数,以存储库模式首先从EF代码中获取记录。休息似乎没问题,但是当将整数传递给动态订单时,它说CannotcastSystem.Int32toSystem.Object表达式如下:Expression>orderByFunc=o=>o.Id;if(options.sort=="Id"){//thisisanIntegerorderByFunc=o=>o.Id;}if(options.sort=="Name"){//stringorderByFunc=o=>o.Name;}if(options.sort=="Code"){orderByFunc=o=>o.Code;}泛

c# - 为什么我需要用这个简单的 LINQ 表达式来引用 System.Numerics?

首先,我知道如何到referenceSystem.Numerics让编译器访问它要求的Complex类型,我只是不明白为什么有必要。我有这个基本结构://////Describesasinglepointonaspectrum.///publicstructSpectrumPoint{publicSpectrumPoint(doublewavelength,doubleintensity){Wavelength=wavelength;Intensity=intensity;}publicdoubleIntensity{get;}publicdoubleWavelength{get;}}

c# - 为什么局部函数生成的 IL 不同于匿名方法和 Lambda 表达式?

为什么C#7编译器将局部函数转换为其父函数所在的同一类中的方法。而对于匿名方法(和Lambda表达式),编译器会为每个父函数生成一个嵌套类,它将包含所有匿名方法作为实例方法?例如,C#代码(匿名方法):internalclassAnonymousMethod_Example{publicvoidMyFunc(string[]args){varx=5;Actionact=delegate(){Console.WriteLine(x);};act();}}将生成类似于以下内容的IL代码(匿名方法):.classprivateautoansibeforefieldinitAnonymousM

c# - Lambda 表达式的非常简单的解释

我正在寻找一个非常简单-基本-没有硬核编程的庞然大物,用外行的术语简单地概括一下Lambda表达式。 最佳答案 简单地说,lambda表达式是一个可重复使用的表达式,它带有多个参数:x=>x+1;上面的表达式是“对于给定的x,返回x+1”。在.NET中,这很强大,因为它可以编译成匿名委托(delegate),这是一个无名函数,您可以在您的代码中声明内联并评估以获取值:intnumber=100;Funcincrement=x=>x+1;number=increment(number);//Callsthedelegateexpres

c# - 将 lambda 表达式用于事件处理程序的最佳实践

在发现lambda表达式并将它们用作匿名函数之后,我发现自己编写了很多更琐碎的事件,例如:txtLogin.GotFocus+=(o,e)=>{txtLogin.Text=string.Empty;txtLogin.ForeColor=SystemColors.ControlText;};txtLogin.LostFocus+=(o,e)=>{txtLogin.Text="Login...";txtLogin.ForeColor=SystemColors.InactiveCaptionText;};我也放弃了只调用其他函数的事件处理程序,将它们替换为执行相同操作的小型lambda:ba

c# - Expression.Call 在简单的 lambda 表达式中。可能吗?

我需要生成一个像这样的lambda表达式item=>item.Id>5&&item.Name.StartsWith("Dish")好的,item.Id>5很简单varitem=Expression.Parameter(typeof(Item),"item");varpropId=Expression.Property(item,"Id");varvalueId=Expression.Constant(5);varidMoreThanFive=Expression.GreaterThan(propId,valueId);但第二部分对我来说更复杂......varpropName=Expr