草庐IT

lambda表达式

全部标签

c# - 获取 "-"之前所有字符的正则表达式

如何使用正则表达式获取字符"-"之前的字符串?例如,我有"text-1",我想返回"text"。 最佳答案 所以我看到了实现这一目标的许多可能性。stringtext="Foobar-test";正则表达式匹配所有内容直到第一个“-”Matchresult=Regex.Match(text,@"^.*?(?=-)");^从字符串的开头开始匹配.*?匹配任何字符(.),零次或多次(*)但尽可能少(?)(?=-)直到下一个字符是“-”(这是一个积极的展望)正则表达式从字符串的开头匹配任何不是“-”的内容Matchresult2=Rege

c# - 如何重写查询表达式以用整数替换枚举?

受到能够在EF查询中使用枚举的愿望的启发,我正在考虑向我的存储库添加一个ExpressionVisitor,它将采用传入的标准/规范标准并重写它们以使用相应的持久int属性。我一直在我的(代码优先)实体中使用以下值后缀模式:publicclassUser:IEntity{publiclongID{get;set;}internalintMemberStatusValue{get;set;}publicMemberStatusMemberStatus{get{return(MemberStatus)MemberStatusValue;}set{MemberStatusValue=(int

C#:编译表达式时,已经添加了具有相同键的项

好的,这是一个棘手的问题。希望这里有一位表达大师可以发现我在这里做错了什么,因为我只是不明白。我正在构建用于过滤查询的表达式。为了简化这个过程,我有几个Expression>使我的代码更清晰的扩展方法,到目前为止它们运行良好。我已经为所有的人写了测试,除了一个,我今天写了一个。那个测试完全失败了ArgumentException带有长堆栈跟踪。我就是不明白。特别是因为我已经在查询中成功使用该方法一段时间了!无论如何,这是我在运行测试时得到的堆栈跟踪:failed:System.ArgumentException:Anitemwiththesamekeyhasalreadybeenadd

c# - .NET Core 2.1 - 循环中的正则表达式比 2.0 慢 200 倍(简单基准测试中为 3 倍)

我有以下正则表达式:varregex=newRegex(@"^ActiveMQ[\d\.-]*$",RegexOptions.Compiled|RegexOptions.IgnoreCase|RegexOptions.CultureInvariant);它运行超过1000个字符串(IsMatch调用)。在.NETCore2.0中,它大约需要10ms。迁移到.NETCore2.1后,它会在2秒上处理相同的数据。知道发生了什么事吗?2.1中有任何行为变化吗?======================更新:BenchmarkDotNet可重现的3倍下降(只需运行,将csproj文件中的ne

c# - 使用 Lambda 表达式获取方法名称

我正在尝试使用lambda表达式获取类型上的方法名称。我正在使用WindowsIdentityFoundation,需要定义访问策略,其中类型名称和命名空间作为资源,方法名称作为操作。这是一个例子。这是我将从中获取类型名称和方法名称的类型:namespaceMy.OrderEntry{publicclassOrder{publicvoidAddItem(stringitemNumber,intquantity){}}}这就是我想通过DSL定义访问策略的方式:ForResource().Performing(o=>o.AddItem).AllowUsersHaving(newClaim(

c# - Entity Framework /Linq 表达式从字符串转换为 int

我有一个像这样的表达式:varvalues=Enumerable.Range(1,2);returnmessage=>message.Properties.Any(p=>p.Key==name&&int.Parse(p.Value)>=values[0]&&int.Parse(p.Value)这可以正常编译,但是当它访问数据库时会抛出异常'LINQtoEntitiesdoesnotrecognizethemethod'Int32Parse(System.String)'method,andthismethodcannotbetranslatedintoastoreexpression'

c# - 最短公共(public)前缀的 LINQ 表达式

谁能帮我用一个很好的LINQ表达式来转换另一个列表中的字符串列表,该列表只包含字符串的最短不同公共(public)前缀?前缀的分隔符是..示例:["A","A.B.D","A","A.B","E","F.E","F","B.C"]转到:["A","E","F","B.C"]已删除:“A.B.D”和“A.B”,因为前缀“A”已经在列表中“A”因为是重复的“F.E”因为“F”已经在列表中谢谢! 最佳答案 给你:fromsetin(fromiteminlistselectitem.Split('.')).GroupBy(x=>x[0])s

c# - 从字符串属性名称创建通用表达式

我有一个名为sortColumn的变量,它包含我想作为查询结果排序依据的列的文本。我还有一个通用存储库,它将包含我要排序的字段的表达式作为参数。我似乎无法从字符串属性名称获取表达式。所以我拥有的通用存储库包含以下方法publicIEnumerableGet(Expression>criteria,Expression>orderBy,intpageIndex,intpageSize,boolisAssendingOrder=true,EnumDeletePolicydeletePolicy=EnumDeletePolicy.ExcludeDeleted)注意此Get的第二个参数是Exp

c# - Shouldly 断言库如何知道应用断言的表达式?

Shouldlyassertionlibraryfor.NET不知何故知道调用断言方法的表达式,因此它能够将其显示到消息中。我试图找出它是如何工作的,但在源代码中迷路了。我怀疑它会查看编译后的代码,但我真的很想看看这是怎么发生的。来自文档map.IndexOfValue("boo").ShouldBe(2);//->map.IndexOfValue("boo")shouldbe2butwas1不知何故Shouldly知道表达式map.IndexOfValue("boo")并且能够在测试失败消息中显示它。有谁知道这是怎么发生的? 最佳答案

c# - 正则表达式允许数字、破折号、逗号

我想知道c#的正则表达式满足以下模式:只允许数字、逗号和数字必须以数字开头和结尾数字范围是0到999数字(例如1、2、3)或范围(例如1-3、2-5)以“,”分隔两个','之间必须是数字或范围'-'必须以数字开头和结尾','后只允许有0-1个空格示例:1-100,134,200-->PASS.Maximumrangeofnumbers0-9991,18,100-->PASS1,18,100-->PASS.Allow0-1whitespaceafter','1,18,100-->FAIL.Duetomorethan1whitespaceafter','1-,18,100-->FAIL.D