jjzjj

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# - 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# - 使用 Lambda 的属性构造函数

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

c# - 转换表达式树

让有:Expression>exp1=x=>x.mesID==1;Expression>exp2=x=>x.mesID==1;现在我需要将exp1传递给_db.Messages.where(exp1);问题是我只有exp2,我需要将类型转换为Message,所有属性都是一样的!现在我这样做:varpar=Expression.Parameter(typeof(Message));varex=(Expression>)Expression.Lambda(exp2.Body,par);问题是输入参数被改变了是的!但是lambda“x.mesID”正文中的x是旧类型。有什么方法可以更改正文中

c# - 返回类型和重载解析不明确的 Lambda 转换

这个问题在这里已经有了答案:Peculiaroverloadresolutionwithwhile(true)(1个回答)关闭8年前。如果我有一个lambda,例如()=>{thrownewException();},不清楚它是否有返回类型。因此,它可以(隐式)转换为Action。和Func(或任何其他Func)。这是因为,根据C#4规范的§6.5匿名函数转换:[A]delegatetypeDiscompatiblewithananonymousfunctionFprovided:…IfDhasavoidreturntypeandthebodyofFisastatementblock,

c# - 在 .Select lambda 中使用 async/await

我正在使用Asp.NetCoreIdentity并尝试简化一些将用户列表及其角色转换到ViewModel的代码。这段代码有效,但在试图简化它的过程中,我陷入了错误和好奇的疯狂漩涡中。这是我的工作代码:varallUsers=_userManager.Users.OrderBy(x=>x.FirstName);varusersViewModel=newList();foreach(varuserinallUsers){vartempVm=newUsersViewModel(){Id=user.Id,UserName=user.UserName,FirstName=user.FirstNa

c# - 使用 c# lambda 将 NameValueCollection 转换为查询字符串是否有效?

在研究如何将NameValueCollection转换为查询字符串时,我遇到了不同的方法。我很好奇更短的lambda语法是否尽可能高效。HowtoconvertNameValueCollectiontoa(Query)String使用迭代函数。publicstaticStringConstructQueryString(NameValueCollectionparameters){Listitems=newList();foreach(Stringnameinparameters)items.Add(String.Concat(name,"=",System.Web.HttpUtili

c# - 从列表中选择 Lambda 或 linq

我正在尝试根据集合对象的ID从linq中的集合中进行选择。List>master=newList>();Listm1=newList();Listm2=newList();master.Add(m1);master.Add(m2);m1.Add(newmyobject{name="n1",id=1});m1.Add(newmyobject{name="n2",id=2});m1.Add(newmyobject{name="n3",id=3});m2.Add(newmyobject{name="m1",id=1});m2.Add(newmyobject{name="m2",id=2});

c# - 如何根据顺序排序

假设我有元素items:[{id:1,...},{id:2,...},{id:3,...}]并且有排序:[2,3,1]得到一个可枚举的items:[{id:2,...},{id:3,...},{id:1,...}]我希望它符合items.Select(o=>new{key=ordering[i++],value=o}).OrderBy(k=>k.key).Select(o=>o.value)但是有更清洁的解决方案吗?以下我已经验证了该工作(HimBromBeere、Domysee、qxg)varexpectedOrder=ordering.Select(x=>result.First(