Tag: lambda

LINQ vs Lambda vs Anonymous Methods vs Delegates

任何人都可以解释什么是LINQ,Lambda,匿名方法,代表意味着什么? 这3个如何彼此不同? 另一个可替换吗? 当我使用谷歌搜索时,我没有得到任何具体的答案

如何使用lambda表达式连接3个表?

我有一个简单的LINQ lambda连接查询,但我想添加一个带有where子句的第3个连接。 我该怎么做呢? 这是我的单个连接查询: var myList = Companies .Join( Sectors, comp => comp.Sector_code, sect => sect.Sector_code, (comp, sect) => new {Company = comp, Sector = sect} ) .Select( c => new { c.Company.Equity_cusip, c.Company.Company_name, c.Company.Primary_exchange, c.Company.Sector_code, c.Sector.Description }); 我想将以下SQL命令添加到上面的LINQ查询中并仍然保持预测: SELECT sector_code, industry_code FROM distribution_sector_industry WHERE service = ‘numerical’ 第3次连接将使用Sector_code上的Sector表和Distribution_sector_industry进行。 提前致谢。

C#lambda – 咖喱用品

我读了这篇文章 ,我发现它很有趣。 总结那些不想阅读整篇文章的人。 作者实现了一个名为Curry的高阶函数(由我重构而没有他的内部类): public static Func<T1, Func> Curry(this Func fn) { Func<Func, Func<T1, Func>> curry = f => x => y => f(x, y); return curry(fn); } 这使我们能够采用像F(x,y)这样的表达式。 Func add = (x, y) => x + y; 并以F.Curry()(x)(y)方式调用它; 这部分我理解,我发现它很酷,以一种令人讨厌的方式。 我无法解决的问题是这种方法的实用用法。 何时何地需要这种技术以及可以从中获得什么? 提前致谢。 编辑:在最初的3个响应之后,我理解增益将是在某些情况下,当我们从curried创建一个新函数时,一些参数不会被重新评估。 我在C#中进行了这个小测试(请记住,我只对C#实现感兴趣,而不是一般的咖喱理论): public static void Main(string[] args) { Func concat = (a, […]

Lambda表达式与匿名方法

我想知道有什么区别。 目前我正在学习这些东西,在我看来,这些都是一样的: delegate void X(); X instanceOfX; instanceOfX = delegate() { code }; instanceOfX = () => { code }; 另外如果lambda更新,我应该只使用lambda并忘记匿名方法吗?

如何调试Linq Lambda表达式?

我正在使用Entity Framework和Linq to Entitites。 我想知道Visual Studio 2012中是否有任何方法可以逐步调试此代码。 在放置断点的那一刻,光标越过它但不会进入。 我更感兴趣的是看到xe的值..而不是例如生成的sql。 注意:我可以使用其他工具或Visual Studio插件。 IEnumerable eventToPushCollage = eventsForEvaluation .GroupJoin(eventCustomRepository.FindAllPushedEvents(), e => e.Id, p => p.PushedEventId, (e, p) => new { e, p }) .Where(x => xeDateTimeStart > currentDateTime && currentDateTime >= xeDateTimeStart.AddMinutes(defaultReminders) && // Data from default reminder for collage event in web.config xpCount() == 0) // Check […]

在Dispatcher.BeginInvoke()中使用async / await

我有一个方法与一些代码执行await操作: public async Task DoSomething() { var x = await …; } 我需要在Dispatcher线程上运行该代码。 现在, Dispatcher.BeginInvoke()是等待的,但是我无法将lambda标记为async以便从内部运行await ,如下所示: public async Task DoSomething() { App.Current.Dispatcher.BeginInvoke(async () => { var x = await …; } ); } 在内部async ,我得到错误: 无法将lambda表达式转换为类型’System.Delegate’,因为它不是委托类型。 如何在Dispatcher.BeginInvoke()使用async ?

在C#中使用Y Combinator

我试图弄清楚如何在一行中编写递归函数(例如阶乘,尽管我的函数要复杂得多)。 为此,我想到了使用Lambda Calculus的 Y组合器 。 这是第一个定义: Y = λf.(λx.f(xx))(λx.f(xx)) 这是减少的定义: Y g = g(Y g) 我尝试用C#编写它们: // Original Lambda Y = f => (new Lambda(x => f(x(x)))(new Lambda(x => f(x(x))))); // Reduced Lambda Y = null; Y = g => g(Y(g)); ( Lambda是一个Func 。我首先尝试使用usedef它,但这不起作用 ,所以现在用delegate dynamic Lambda(dynamic arg); ) 我的阶乘lambda看起来像这样(改编自这里 ): Lambda factorial = f […]

将列表合并为一个

我看到下面的post对我来说真的很难理解。 所以我重新发布它。 对不起,如果有人认为它是重复的。 我只有简单的要求 C#加入/ Linq和Lambda的位置 我有这样的课 public class Person { public int Id{get;set;} public string Name{get;set;} public string MailingAddress{get;set;} } 我有一个像下面这样的方法 public IList GetNames(IList ids) 这将给我下面的人员名单 1“Sam”“” 2“开发”“” 4“哈希” 我有另一种方法,如下所示 public IList GetMailingAddress(IList ids) 这将给我下面的人员名单 1“”“ABC” 6“”“TTT” 2“”“XYZ” 现在我需要合并两个方法的结果,这样我才能得到这样的最终结果 1“Sam”“ABC” 2“Dev”“XYZ” 更新:对不起,我没有明确提供我的测试数据。 请参阅上面的测试数据

使用Expression <Func >以与Func 相同的方式编写调用

考虑一个可以用作多个其他类的成员的类: class Customer { public string FirstName {get;set;} public string LastName {get;set;} } // Both “Order” and “Profile” have a “Customer” property class Order { public Customer Customer {get;set;} } class Profile { public Customer Customer {get;set;} } 我想定义一个方法,为与Customer关联的对象生成检查器。 如果我想要一个内存检查器,我这样做: static Func Check(Func conv, string first, string last) { return obj => conv(obj).FirstName == first […]

使用rhino mock进行lambdaunit testing失败

如果我有这个测试 Expect.Call(_session.Single(x => x.Email == userModel.Email)).Repeat.Once().Return(null); 告诉我 Rhino.Mocks.Exceptions.ExpectationViolationException:ISession.Single(x =>(x.Email == value(Enquete.Test.Controllers.MemberControllerTest + c__DisplayClassb).userModel.Email)); 期望#1,实际#0。 它失败但如果我添加.IgnoreArguments()它可以工作。 是否可以使用lambda进行测试? 如果我调试我可以看到我的电子邮件是相同的。 这是完整的测试: [Test] public void Register_Post_ReturnRedirectOnSuccess() { _builder.InitializeController(_controller); var userModel = TestHelper.CreateMemberModel(); var returnMemberRole = “Member”; var tempPassword = “Val1dPass”; var member = TestHelper.CreateMember(userModel); var emailSubscription = “subscription@corpiq.com”; var subjectNotification = “sujet du meessaaggee”; var mailUseSSL = “true”; var […]