C#中匿名委托以及Lambda表达式的实例详解
一. C#从1.0到4.0, 随着Linq,泛型的支持,代码越来越简单优雅
1 int[] nums = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; 2 IEnumerable<int> newNums = from n in nums where n > 0 select n; 3 newNums = newNums.Where(new Func<int,int, bool>(delegate(int i,int index) { return i < index; })); 4 newNums = newNums.Where(new Func<int, int, bool>((int i, int index)=> i < index)); 5 newNums = newNums.Where(delegate(int i, int index) { return i < index; }); 6 newNums = newNums.Where((i, index) => i < index); 7 foreach (var i in newNums) 8 { 9 Console.WriteLine(i);10 }
二.集合操作,也可适于到EF的数据库操作
1.创建两个实体类
1 public class Store 2 { 3 public string Id; 4 public string Name; 5 } 6 public class Person 7 { 8 public string name { get; set; } 9 public int age { get; set; }10 public string StoreId { get; set; }11 }
2.插入数据
1 var Stores = new List<Store>() 2 { 3 new Store() { Id="1",Name="1班"}, 4 new Store() { Id="2",Name="2班"} 5 }; 6 7 var Persons = new List<Person>() 8 { 9 new Person() { name="p1",age=1, StoreId="1"},10 new Person() { name="p2",age=2, StoreId="1"},11 new Person() { name="p3",age=3, StoreId="1"},12 new Person() { name="p4",age=4, StoreId="2"},13 new Person() { name="p5",age=5, StoreId="1"},14 new Person() { name="p6",age=6, StoreId="2"},15 new Person() { name="p7",age=7, StoreId="1"},16 new Person() { name="p8",age=8, StoreId="1"}17 };
3. 查询年龄小于3岁的人1班和2班分别有几个人
1 var plst = Persons.Where(o => o.age > 3).GroupBy(o => o.StoreId).Select(g => new { StoreId = g.Key, Count = g.Count() }).Join(Stores, s => s.StoreId, p => p.Id, (s, p) => new { s.StoreId, storeName = p.Name, s.Count });2 foreach (var p in plst)3 {4 Console.WriteLine(p.storeName + "有" + p.Count + "个人");5 }
4.输出
2班有2个人 1班有3个人
以上是C#中匿名委托以及Lambda表达式的实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在C++中,使用Lambda表达式处理异常有两种方法:使用try-catch块捕获异常,并在catch块中处理或重新抛出异常。使用std::function类型的包装函数,其try_emplace方法可以捕获Lambda表达式中的异常。

在C++中,闭包是能够访问外部变量的lambda表达式。要创建闭包,请捕获lambda表达式中的外部变量。闭包提供可复用性、信息隐藏和延迟求值等优势。它们在事件处理程序等实际情况中很有用,其中即使外部变量被销毁,闭包仍然可以访问它们。

lambda表达式在C++多线程编程中的优势包括:简洁性、灵活性、易于传参和并行性。实战案例:使用lambda表达式创建多线程,在不同线程中打印线程ID,展示了该方法的简洁和易用性。

C++Lambda表达式支持闭包,即保存函数作用域变量并供函数访问。语法为[capture-list](parameters)->return-type{function-body}。capture-list定义要捕获的变量,可以使用[=]按值捕获所有局部变量,[&]按引用捕获所有局部变量,或[variable1,variable2,...]捕获特定变量。Lambda表达式只能访问捕获的变量,但无法修改原始值。

当今人工智能(AI)技术的发展如火如荼,它们在各个领域都展现出了巨大的潜力和影响力。今天大姚给大家分享4个.NET开源的AI模型LLM相关的项目框架,希望能为大家提供一些参考。https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一种开源的软件开发工具包(SDK),旨在将大型语言模型(LLM)如OpenAI、Azure

在C++中捕获外部变量的lambda表达式有三种方法:按值捕获:创建一个变量副本。按引用捕获:获得变量引用。同时按值和引用捕获:允许捕获多个变量,按值或按引用。

在C++中,可以使用Lambda表达式作为函数参数,实现回调函数的灵活性。具体而言:参数传递:通过std::function包装Lambda表达式,以函数指针形式传递给函数。返回值处理:使用std::function声明回调函数指针时指定返回值类型。实战案例:优化GUI事件处理中的回调,避免创建不必要的对象或函数指针,提高代码简洁性和可维护性。
