草庐IT

表达力

全部标签

C#:抛出无效的表达式编译

我正在使用这段代码来检查queryable值:visitor.Queryable=queryable??thrownewException("errormessage");我遇到编译错误:errorCS1525:Invalidexpressionterm'throw'我正在使用4.5.2.net框架。有什么想法吗? 最佳答案 此功能仅在C#7.0之后可用。参见ThrowexceptionofWhat'sNewinC#7.0.如果您使用的是较旧的VS并希望启用C#7功能:请查看Howtousec#7withVisualStudio20

c# - 如何在没有调用的情况下合并两个 C# Lambda 表达式?

我想合并以下表达式://exampleclassclassOrder{ListLines}classOrderLine{}Expression>>selectOrderLines=o=>o.Lines;Expression,Boolean>>validateOrderLines=lines=>lines.Count>0;//nowcombinethosetoExpression>validateOrder;我使用对selectOrderLines的调用并将结果提供给validateOrderLines使其工作,但因为我在EntityFramework中使用这些表达式,所以我实际上必须创

c# - 执行数学表达式的最佳方法是什么?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:Isthereastringmathevaluatorin.NET?Bestandshortestwaytoevaluatemathematicalexpressions我有一个字符串变量stringexp="12+34+4*56+(23*45+12)2/30"最好的方法是什么?不使用第三方dll?

c# - linq表达式可以不区分大小写吗

我正在利用thisprojecttousejqgridtofilterandsortcollections.一个缺少的功能是此示例没有进行我需要的不区分大小写的搜索。因此,如果用户输入“Test”,我希望它与“TEST”、“TeST”等匹配。.我有这样的代码:caseWhereOperation.Equal:condition=Expression.Equal(memberAccessToString,filter);lambda=Expression.Lambda(condition,parameter);break;caseWhereOperation.NotEqual:condi

c# - 如何将 'out' 参数传递给 lambda 表达式

我有一个具有以下签名的方法:privatePropertyInfogetPropertyForDBField(stringdbField,outstringprettyName)在其中,我根据给定的dbField找到关联值prettyName。然后我想找到名称为prettyName的所有属性(如果有的话),因此我尝试执行以下操作:IEnumerablematchingProperties=getLocalProperties().Where(prop=>prop.Name.Equals(prettyName));但是,这会产生以下错误:Cannotusereforoutparamete

c# - 对于匿名方法,是否存在委托(delegate)语法优于 lambda 表达式的情况?

随着lambda表达式(内联代码)等新功能的出现,是否意味着我们不必再使用委托(delegate)或匿名方法?在我看到的几乎所有示例中,它都是为了使用新语法进行重写。我们仍然必须使用委托(delegate)和lambda表达式的任何地方都行不通吗? 最佳答案 是的,有些地方直接使用匿名委托(delegate)和lambda表达式是行不通的。如果方法采用无类型委托(delegate),则编译器不知道将匿名委托(delegate)/lambda表达式解析为什么,您将收到编译器错误。publicstaticvoidInvoke(Deleg

c# - 如何替换 Regex 表达式中的实际星号字符 (*)?

我有一个声明:我有一个字符串,例如content="*test*"我想搜索并替换它,所以当我完成时,字符串包含以下内容:content="(*)test(*)"我的代码是:content=Regex.Replace(content,"*","(*)");但这会导致C#出错,因为它认为*是正则表达式语法的一部分。我如何修改此代码,以便将我的字符串中的所有星号更改为(*)而不会导致运行时错误? 最佳答案 由于*是正则表达式元字符,当您需要它作为字符类定义之外的文字星号时,需要使用\将其转义为\*。在C#中,您可以将其写为"\\*"或@"

c# - 将 LINQ 表达式传递给另一个 QueryProvider

我有一个简单的自定义QueryProvider,它接受一个表达式,将其转换为SQL并查询一个sql数据库。我想在QueryProvider中创建一个小的缓存来存储经常访问的对象,这样就可以在不命中数据库的情况下进行检索。QueryProvider有方法publicobjectExecute(System.Linq.Expressions.Expressionexpression){///BuildsanSQLstatementfromtheexpression,///executesitandreturnsmatchingobjects}缓存作为这个QueryProvider类中的一个

c# - 有没有一种简单的方法可以将(lambda 表达式)字符串解析为 Action 委托(delegate)?

我有一个方法可以根据传递给它的Action委托(delegate)来改变“帐户”对象:publicstaticvoidAlterAccount(stringAccountID,ActionAccountAction){AccountsomeAccount=accountRepository.GetAccount(AccountID);AccountAction.Invoke(someAccount);someAccount.Save();}这按预期工作...AlterAccount("Account1234",a=>a.Enabled=false);...但现在我想尝试做的是有一个像这

c# - 对 IEnumerable<T> 以外的类型(monads?)进行操作的 LINQ 查询表达式——可能的用途?

我正在看书Real-worldfunctionalprogrammingbyTomasPetricekandJonSkeet我很难消化关于计算表达式的部分1)(又名monad)。通过这本书,我了解到—与我以前的经验相反—LINQ查询表达式不限于IEnumerable,但也可以处理其他自定义类型。这对我来说似乎很有趣,我想知道是否存在查询表达式语法(fromxin...select...)非常适合的场景。一些背景信息:显然,此类自定义类型称为计算类型,它们被描述为与monadsinHaskell本质上相同的事物。.我一直无法理解monad到底是什么,但根据这本书,它们是通过称为bind和