草庐IT

lambda表达式

全部标签

c# - 如何使用 C# 将 .Find() 方法与 like 表达式一起使用

在excel文件范围内查找具有类似表达式的字符串例子excel文件如下所示:----------------------------------------------------------#|A|B|C|D|----------------------------------------------------------1|AVALUE1|BVALUE1|CVALUE1|DVALUE1|----------------------------------------------------------2|AVALUE2|BVALUE2|CVALUE2|DVALUE2|------

c# - 为什么在 C# 中动态表达式的周围类型没有静态解析?

在动态表达式dynamicx中,是否有原因/解释为什么周围的表达式(例如foo(x))也变得动态?考虑:staticstringfoo(objectx){}staticvoidMain(){dynamicx=null;foo(x);//foo(x)isadynamicexpression}我假设编译器可以解析(在编译时)调用foo(object)。但是,将鼠标悬停在foo(x)上会显示该类型是动态的。我可以通过指定帮助编译器进行推导:foo((object)x);但我认为dynamic表达式的类型是object。C#Reference确实说“未解析包含动态类型表达式的操作”,我的问题是

c# - 从字符串源列表动态生成最短正则表达式

我有一堆代表一系列字符串的SKU(库存单位),我想创建一个正则表达式来匹配它们。例如,如果我有SKU:varskus=new[]{"BATPAG003","BATTWLP03","BATTWLP04","BATTWSP04","SPIFATB01"};...我想自动生成正则表达式以识别任何一个SKU。我知道我可以简单地做"BATPAG003|BATTWLP03|BATTWLP04|BATTWSP04|SPIFATB01",但是SKU列表可能会很长,我想压缩生成的Regex以查看像“BAT(PAG003|TW(LP0(3|4)|SP04))|SPIFATB01”所以这是一个组合数学练习。

c# - 在大文件中搜索和替换正则表达式而不会出现 OutOfMemoryException

我创建了一个小代码来搜索正则表达式字符串并将其替换为其他内容,然后创建一个包含所做更改的新输出文件。该代码似乎适用于较小的文件,但对于100MB或更大的文件,我给出了System.OutOfMemoryException'错误。这是我的代码:stringfoldername=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),String.Format("FIXED_{0}.tmx",Path.GetFileNameWithoutExtension(textBox1.Text)));stri

c# - lambda 表达式中的事件 - C# 编译器错误?

我正在考虑使用lamba表达式来允许以强类型方式连接事件,但中间有一个监听器,例如给定以下类(class)classProducer{publiceventEventHandlerMyEvent;}classConsumer{publicvoidMyHandler(objectsender,EventArgse){/*...*/}}classListener{publicstaticvoidWireUp(Expression>expr){/*...*/}}事件将被连接为:Listener.WireUp((p,c)=>p.MyEvent+=c.MyHandler);但是这会导致编译器错误

c# - 将 lambda 表达式转换为用于缓存的唯一键

我查看了与此类似的其他问题,但找不到任何可行的答案。我一直在使用以下代码生成唯一键,以便将我的linq查询结果存储到缓存中。stringkey=((LambdaExpression)expression).Body.ToString();foreach(ParameterExpressionparaminexpression.Parameters){stringname=param.Name;stringtypeName=param.Type.Name;key=key.Replace(name+".",typeName+".");}returnkey;它似乎适用于包含整数或bool值的

c# - 将过滤器表达式动态添加到数组

我有这个示例,它创建了3个表达式并将它们添加到一个表达式数组中。现在我想知道如何在循环中为未知数量的表达式做同样的事情。Expression>filter1=c=>c.City.StartsWith("S");Expression>filter2=c=>c.City.StartsWith("M");Expression>filter3=c=>c.ContactTitle=="Owner";Expression>[]filterExpressions=newExpression>[]{filter1,filter2,filter3}; 最佳答案

c# - 使用 Lambda 的属性构造函数

有可能这样做:publicstaticvoidSomeMethod(Expressionexpr){//LambdaExpressionhappilyexceptsanyExpessionLambdaExpressionlamb=expr;}并在别处调用它,为参数传递一个lambda:SomeMethod,Person>>(p=>p.FirstOrDefault());我想将表达式作为参数传递给属性构造函数。是否可以执行以下操作?classExpandableQueryAttribute:Attribute{privateLambdaExpressionsomeLambda;//cto

C# 动态方法 - IL 与表达式树

我正在玩和学习ANTLR,为.NET构建一个简单的DSL,将字符串中的脚本转换为动态方法。我的第一个想法是翻译成IL操作码,但现在我正在阅读有关DM创建的表达式树。似乎我可以使用表达式树生成任何方法,就像IL代码一样?谢谢!代码:https://github.com/ricardoborges/NPortugol2 最佳答案 ILCode为您提供更多功能。例如,您可以使用它发出适用于.NETCLR的代码,但不一定是您可以用C#或VB.NET编写的代码。但总的来说是的,你应该能够用表达式树做任何你想做的事情,而且它们更容易理解。发出I

c# - 有没有办法在正则表达式中执行动态替换?

有没有办法在C#4.0中使用匹配中包含的文本的函数进行正则表达式替换?在php中有这样的东西:reg_replace('helloworldyay','(?=')\s(?=')',randomfunction('$0'));它为每个匹配项提供独立的结果,并在找到每个匹配项的地方替换它。 最佳答案 参见Regex.Replace具有MatchEvaluator重载的方法。MatchEvaluator是一种您可以指定的方法,用于处理每个单独的匹配项并返回应用作该匹配项的替换文本的内容。例如,这个...Thecatjumpedoverth