草庐IT

lambda表达式

全部标签

c# - 为什么即使只有一种可能的返回类型,方法调用表达式的类型也是动态的?

受此启发question.简短版本:如果只有一个M重载或所有重载,为什么编译器无法确定M(dynamicarg)的编译时类型M的重载具有相同的返回类型?根据规范,§7.6.5:Aninvocation-expressionisdynamicallybound(§7.2.2)ifatleastoneofthefollowingholds:Theprimary-expressionhascompile-timetypedynamic.Atleastoneargumentoftheoptionalargument-listhascompile-timetypedynamicandthepri

c# - Linq/Lambda OrderBy Delegate for List<string> of IP Addresses

给定Listips=newList();我需要按逻辑顺序对IP地址列表进行排序(即“192.168.0.2”出现在“192.168.0.100”之前)。当前(并且正确地,按字母顺序排列)如果列表包含:192.168.0.1192.168.0.2192.168.0.10192.168.0.200ips.OrderBy(p=>p)返回:192.168.0.1192.168.0.10192.168.0.2192.168.0.200 最佳答案 你需要做一个比较器:(已测试)classIPComparer:IComparer{publicin

c# - 为 LINQ/Lambda 创建 OrderBy 表达式

我正在创建一个使用Lambda/LINQ进行动态where和orderby的概念验证。以下代码适用于where表达式,但我无法弄清楚如何通过表达式创建订单。对于这个例子,如果可能的话我想保持简单;我宁愿不编写修改表达式树的代码。voidMain(){DateTimeproductSince=DateTime.UtcNow.Subtract(newTimeSpan(1,30,0));Expression>filter=d=>d.CreatedDate>productSince&&d.Priceproducts=GetProducts(filter,Products);Console.Wr

c# - 带有异步 lambda 和 Task.WaitAll 的 Task.Factory.StartNew

我正在尝试对任务列表使用Task.WaitAll。问题是任务是一个异步lambda,它会破坏Tasks.WaitAll,因为它从不等待。这是一个示例代码块:Listtasks=newList();tasks.Add(Task.Factory.StartNew(async()=>{using(dbContext=newDatabaseContext()){varrecords=awaitdbContext.Where(r=>r.Id=100).ToListAsync();//dolongcpuprocesshere...}}Task.WaitAll(tasks);//domorestuf

c# - LINQ vs Lambda vs 匿名方法 vs 委托(delegate)

谁能解释一下LINQ、Lambda、匿名方法和委托(delegate)的含义?这三者有何不同?一个可以替换另一个吗?我在谷歌搜索时没有得到任何具体答案 最佳答案 LINQ是一个宽泛的技术名称,涵盖了.NET3.5的大部分内容和C#3.0的变化;“用语言查询”等等。委托(delegate)相当于函数指针;一个“方法句柄”作为一个对象,如果你愿意的话,即Funcadd=(a,b)=>a+b;是一种编写我随后可以调用的委托(delegate)的方法。委托(delegate)还支持事件和其他回调方法。匿名方法是用于创建委托(delegate

c# - 为什么我不能使用 Lambda 表达式取消订阅事件?

本文指出YouCan’tUnsubscribefromanEventUsingaLambdaExpression.例如您可以通过以下方式订阅:d.Barked+=(s,e)=>Console.WriteLine("Bark:{0}",e);但是你不能这样取消订阅:d.Barked-=(s,e)=>Console.WriteLine("Bark:{0}",e);为什么?这与取消订阅委托(delegate)有什么区别,例如EventHandlerhandler=(s,e)=>Console.WriteLine("Bark:{0}",e);d.Barked+=handler;//...d.B

c# - 通过字符串生成EF orderby表达式

这个问题在这里已经有了答案:DynamicLINQOrderByonIEnumerable/IQueryable(22个答案)关闭8个月前。我想通过字符串参数生成表达式,代码如下:privateExpression>Generate(stringorderby){switch(orderby){case"Time":returnt=>t.Time;case"Money":returnt=>t.RewardMoney;default:returnt=>t.Id;}}然后调用它:_context.Items.OrderBy(Generate("Money"));但是编译不了!我将T更改为对

c# - 货币正则表达式

我有asp:TextBox来保存货币值(value),即“1000”、“1000,0”和“1000,00”(逗号是俄罗斯标准的分隔符)。我要将什么ValidationExpression用于适当的asp:RegularExpressionValidator?我试过\d+\,\d{0,2}但它不允许没有小数位的数字,例如只是“1000”。 最佳答案 \d+(,\d{1,2})?仅当您有十进制数字时才允许使用逗号,并且根本不允许使用逗号。问号与{0,1}的含义相同,因此在\d+之后您有零个实例(即没有)或一个实例,\d{1,2}正如海伦

c# - 我需要一个正则表达式来验证给定字符串中至少 7 位数字

我想验证一个电话号码。我的条件是我希望给定字符串中的数字最少为7个,忽略分隔符、X、括号。其实我想在regex中实现这个功能:FuncValidate=s=>s.ToCharArray().Where(char.IsDigit).Count()>=7;FuncRegexValidate=s=>System.Text.RegularExpressions.Regex.IsMatch(s,@"regexpatternshouldcomehere.")stringx="asda1234567sdfasdf";stringy="asdasdfa123456sdfasdf";boolxx=Val

c# - 类型 'System.DateTime' 的表达式不能用于返回类型 'System.Object'

我已经创建了一个用于排序的表达式,它工作正常,直到我点击DateTime字段,我在其中收到以下错误(在第二行):Expressionoftype'System.DateTime'cannotbeusedforreturntype'System.Object'这是我的代码:ParameterExpressionparam=Expression.Parameter(typeof(MyEntity),"x");Expression>sortExpression=Expression.Lambda>(Expression.Property(param,sortKey),param);有人能帮忙