Tag: lambda

比较:LINQ vs LAMBDA表达式

我需要讨论LINQ和Lambda Expression的性能。 哪一个更好?

lambda表达式的重点是什么?

阅读本文后 ,我无法弄清楚为什么使用lambda表达式。 公平地说,我认为我没有正确理解委托和表达式树类型是什么,但我不明白为什么有人会使用lambda表达式而不是声明的函数。 有人可以开导我吗?

为什么c#不能使用内联匿名lambdas或委托?

我希望我能恰当地提出问题的标题。 在c#中,我可以使用lambdas(作为委托),或者使用较旧的委托语法来执行此操作: Func fnHello = () => “hello”; Console.WriteLine(fnHello()); Func fnHello2 = delegate() { return “hello 2”; }; Console.WriteLine(fnHello2()); 那么为什么我不能“内联”lambda或委托体,并避免在命名变量中捕获它(使其匿名)? // Inline anonymous lambda not allowed Console.WriteLine( (() => “hello inline lambda”)() ); // Inline anonymous delegate not allowed Console.WriteLine( (delegate() { return “hello inline delegate”; })() ); 在javascript中工作的示例(仅用于比较)是: alert( (function(){ return “hello inline anonymous […]

MVC HTML助手和Lambda表达式

我在很大程度上理解Lambda查询,但是当我尝试学习MVC时,我看到了默认的Scaffolding模板,他们使用Lambda表达式来处理这么多组件。 例如, DisplayFor HTML Helper就是其中之一。 代码为@Html.DisplayFor(model => model.name) 我希望没有人认为这是一个愚蠢的问题,只是因为我(我认为)在大多数情况下理解Lambda表达式,它们并不像常规代码那样“流动”,我不得不考虑它很难理解实际发生了什么! 所以问题确实是, 1)使用Lambda查询为这些HTML帮助程序,我是否有任何好处? 2)据我所知,DisplayFor只会连接到一个项目 – 所以,为什么这不仅仅是@Html.DisplayFor(model.name)或类似的? 请提供任何其他可以使MVC新手更好的信息!

在C#中将DataTable转换为通用列表

免责声明:我知道它在SO的很多地方被问过。 我的查询有点不同。 编码语言:C#3.5 我有一个名为cardsTable的DataTable从DB中提取数据,我有一个类卡,它只有一些属性(没有构造函数) public class Cards { public Int64 CardID { get; set; } public string CardName { get; set; } public Int64 ProjectID { get; set; } public Double CardWidth { get; set; } public Double CardHeight { get; set; } public string Orientation { get; set; } public string BackgroundImage { get; […]

Lambda解释及它是什么以及一个很好的例子

谁能给我一个很好的解释如何使用Lambda并给出一个很好的例子。 我见过它,但我不知道它是什么或做了什么。

错误:此上下文EF中仅支持原始类型或枚举类型

这段代码不断出现此错误。 : 无法创建“Repository.DBModel.Subscriber”类型的常量值。 在此上下文中仅支持原始类型或枚举类型。 我已经改变了几次,但它不断出现这个错误。 using (SubscriberDBHandler db = new SubscriberDBHandler()) { IEnumerable NewSubscribers = Subscribers .Where(sub => db.Subscriber .Any(aSub => !aSub.Email.Equals(sub.Email))); List updateSubscribers = db.Subscriber .Where(dbSub => Subscribers .Any(lSub => lSub.Email .Equals(dbSub.Email))).ToList(); if(NewSubscribers.Count() >= 1) { db.Subscriber.AddRange(NewSubscribers); } updateSubscribers.ForEach(aSub => aSub.State = Subscribers .FirstOrDefault(sub => sub.Email .Equals(aSub.Email)).State ?? “Error” ); db.SaveChanges(); } 如果有人能够指出我的错误或想出一个更有效的方法来做到这一点,我将不胜感激。 提前感谢您的时间和帮助。 […]

C#:使用Lambdas的递归函数

以下不编译: Func fac = n => (n <= 1) ? 1 : n * fac(n – 1); 在访问之前,可能不会初始化局部变量’fac’ 你怎么能用lambdas做一个递归函数? [更新] 这里还有两个我觉得有趣的链接: Eric Lippert的“为什么递归lambda导致明确的赋值错误?” C#中的匿名递归

通过lambda表达式在运行时获取局部变量(和参数)的名称

我有兴趣以重构安全的方式在运行时检索局部变量(和参数)的名称。 我有以下扩展方法: public static string GetVariableName(Expression<Func> variableAccessExpression) { var memberExpression = variableAccessExpression.Body as MemberExpression; return memberExpression.Member.Name; } …返回通过lambda表达式捕获的变量的名称: static void Main(string[] args) { Console.WriteLine(GetVariableName(() => args)); // Output: “args” int num = 0; Console.WriteLine(GetVariableName(() => num)); // Output: “num” } 但是,这只能起作用,因为C#编译器将在匿名函数中捕获的任何局部变量(和参数)提升为幕后编译器生成的类中的同名实例变量(根据Jon Skeet )。 如果不是这种情况, Body到MemberExpression将失败,因为MemberExpression表示字段或属性访问。 这个变量是促销记录的行为,还是一个实现细节可能会在框架的其他版本中发生变化? 注意:这个问题是我前一个关于参数validation的概括。

Linq查询还是Lambda表达式?

我在我的ASP.NET,C#,Web应用程序中使用Entity Framework。 如果我需要从DataBase中选择一条记录(在数据访问层中),我应该使用哪种方法? Linq查询还是Lambda表达式? 例如:- //Linq var result = from a in db.myTable.Take(1) where a.Id == varId select a; return result.First(); //Lambda return db.myTable.FirstOrDefault(a => a.Id == varId); 在这种情况下是否有任何首选方式或其他优势?