【c#怪异的Lambda 语法】教程文章相关的互联网学习教程文章

C#泛型:如何在lambda表达式中使用struct约束和nullables时避免代码重复【代码】

说我有一个功能,如:public TProperty Foo<TClass, TProperty>(TClass instance, Expression<Func<TClass, TProperty>> expression){...}但后来我意识到它应该只用于值类型,所以我添加了一个约束public TProperty Foo<TClass, TProperty>(TClass instance, Expression<Func<TClass, TProperty>> expression)where TProperty : struct{...}但我后来发现,这不会让我传递一个可以为空的TProperty的表达式.我能看到处理这个问题的唯一方...

c# – 在执行之前传递lambda表达式的方法参数类型【代码】

我试图将一些基于接口的抽象改进为遗留代码,作为依赖注入的初步步骤.遗留代码包含我正在努力封装的lambda用法.这是现有的lambda用法:private void MethodAaa(EntityA a, EntityB a, int someInt) {...}private void MethodBbb(DateTime date, EntityA e) {...}_commandObjectFromThirdPartyLibrary.Execute(() => MethodAaa(a, b, c));_commandObjectFromThirdPartyLibrary.Execute(() => MethodBbb(d, e));我希望通过公共基类方法...

C#关于lambda表达式的解释

我刚刚发现了这个lambda表达式: myCustomerList.GroupBy(cust => cust.CustomerId).Select(grp => grp.First()); 如果我错了,请纠正我,但是使用这个lambda,你可以区分CustomerId上的myCustomerList,这是我所需要的.但我想弄清楚它是如何工作的. 第一步是groupby:这个结果在字典中,IGouping< long,Customer>使用CustomerId作为字典的键. 第二个选择发生,这是我没有得到的部分.选择选择客户,但如何从字典中选择客户?你需要一个密钥...

c# – Lambda Expression指定源对象【代码】

背景:由于我们在C#MVC3中开发,我们希望有一些类用于处理网页上的表. (分页/搜索等等). 所以我们终于发现拥有以下类可能是最好的: 将保存所有其他对象并知道当前页面/当前搜索等的表对象…(misc信息)public class Table<T> where T : IPrivateObject {...public ICollection<Column<T>> Columns { get; set; }public ICollection<Row<T>> Rows { get; set; }public ICollection<RowMenu<T>> Menus { get; set; }public ICollectio...

c# – Lambda表达式,其中列等于列表项【代码】

我的一般结果有不同的列,包括id列.我还有一个具有一组id的List.我想得到List项(id)与Id列值匹配的结果. 我尝试在循环中执行此操作:foreach(int Uid in idList) {queryResults = queryResults.Where(security => security.id== Uid); } 但是这给了我queryResults中的单个记录,它是列表中的最后一个Uid.我想要的是,list中所有Uid的记录应该在queryResults中.解决方法:您需要将每个项目的ID与存储在idList中的ID进行匹配.这可以通过...

c# – 使用linq lambda表达式的查询列表【代码】

我如何获得列表中的参与者?我得到了各县的县,然后我希望所有参与者都拥有县名单中的CountyOfParticipationId.if (collaborationId != null) {var counties = (from c in db.CountyCollaborationswhere c.CollaborationId == collaborationIdselect c).ToList();participants = participants.Where(p => p.CountyOfParticipationId in counties);}解决方法:.Where(p => counties.Contains(p.CountyOfParticipationId)) 现在如果有很...

join不返回左表C#lambda中的所有元素【代码】

我有2个表,左表有这样的数据: 我使用以下表达式与另一个表进行左连接:var result = posicion.Join(fact,p => p.Cod_articulo,f => f.Cod_articulo,(p, f) => new { p.Posicion, p.Cant_historico, p.Cod_articulo, f.Cantidad_facturada });问题是结果不包括左表中的一些项目,如下所示: 正如您在结果中看到的那样,位置3,6等没有数据.我的加入中会缺少什么?解决方法:您需要进行组连接(即Linq中的左连接).最好使用查询语法:from...

c# – List.Find(Predicates / Lambda)【代码】

有人能告诉我以下3个查找选项之间的差异/优势:List<Employee> Employees = new List<Employee>();Employee tmp = new Employee();tmp.FirstName = "Randy";tmp.LastName = "Jones";Employees.Add(tmp);tmp.FirstName = "David";tmp.LastName = "Smith";Employees.Add(tmp);tmp.FirstName = "Michele";tmp.LastName = "Morris";Employees.Add(tmp);// Find option 1Employee eFound1= Employees.Find((Employee emp1) => {return e...

c# – 具有正文的lambda表达式的确切类型是什么?

Windows窗体扩展方法Invoke()不接受lambda表达式,我们不必首先将它类型转换为类似Action的委托类型.这让我想知道,如果lambda表达式(带有主体)不是显式委托或表达式,它的类型是什么?解决方法:This makes me wonder, if lambda expression (with a body) is not explicitly a delegate nor an expression, what is its type?它没有正常意义上的单词类型(即CLR类型),就像null没有类型一样. (较旧版本的C#规范具有“null类型”的概念,...

c# – 无法将lambda表达式转换为“…”类型,因为它不是委托类型【代码】

美好的一天!我试图使用lambda表达式编写一个匿名方法,该表达式将从异步任务返回一个对象.我想在构造函数中执行此操作,因此这是我无法使其父方法异步的原因. ReadJsonAsync方法返回一个Session对象.我会告诉你相关的代码:Session session; fileService = new FileService(); session = async () => { return await fileService.ReadJsonAsync() };提前致谢!解决方法:如果你想要一个匿名方法,你必须声明一个返回任务< Session>的...

c# – 为什么第二个写字线在使用lambda时打印出12?【代码】

代码如下int factor = 2;Transformer sqr = x => x * factor;Console.WriteLine(sqr(3)); // 6factor = 4;Console.WriteLine(sqr(3)); // 12我认为lambda应该在编译时捕获因子,因此两个writeline的结果应该相同. 但是,当我运行时,我得到6和12,C#lambda也使用动态范围?我认为lambda应该使用一种叫做“词法范围”的东西解决方法:首先,你无法在编译时捕获任何东西. lambda的环境只能在运行时捕获,因为这是唯一存在的时间. 当一个变量...

c# – 如何在lambda表达式中为匿名变量编写IEqualityComparer?【代码】

我想知道有一种方法可以在lambda表达式中为匿名变量实现IEqualityComparer,或者,无论如何,我需要编写类来将匿名变量转换为sprecific类并创建一个我需要实现IEqualtyComparer的类? 我编写了创建笛卡尔(Decart)生产的代码:我定义了Decart类.public class Decart {public int X;public int Y; }我为Decart类定义了IEqualtityComparerpublic class Ext : IEqualityComparer<Decart> {public bool Equals(Decart x, Decart y){if ((x....

c# – 实体框架列表包含在lambda中【代码】

我想使用特定ID查询项目.例如:var ids = new List<int> { 1, 3, 5 };var items = context.Items.Where(item => ids.Contains(item.ID)).ToList();问题: >这会使用SQL IN运算符生成单个查询吗?>这个代码在性能方面是否可以?>有没有更好的方法呢? 我正在使用Entity Framework 6和Microsoft SQL Server.解决方法:>这会使用SQL IN运算符生成单个查询吗?是>这个代码在性能方面是否可以?是(适用于小清单)>有没有更好的方法呢?否(...

c# – 如何在Visual Studio 2015中调试amazon lambda函数?

我正在研究.net核心aws lambda项目.我无法调试它.我试图调试,但我有一个错误Program does not contain a static ‘Main’ method suitable for an entrypoint.我在function.cs类中添加了一个静态main方法,并添加了“”debugType“:”portable“,”emitEntryPoint“:true’行到project.json文件然后; 我有一个错误,如项目不包含入口点,无法直接启动.为了调试这个项目,需要添加“emitEntryPoint”:true …解决方法:我建议您创建一...

AWS API网关自定义授权Lambda的C#实现【代码】

我对使用C#编码的lambda对AWS API Gateway的自定义授权提出了疑问.在AWS Lambdas的文档中,函数签名如下:returnType handler-name(inputType input, ILambdaContext context) {... }需要为函数处理程序指定inputType和returnType.对于API网关中的自定义授权,inputType和returnTypes应该是什么?提前致谢.解决方法:我想我会详细说明一下.这使用了在这里完成的部分工作,并试图使它像他们在这里给我们的例子.http://docs.aws.amazon.c...