IQueryable 提供对数据类型已知的特定数据源的查询计算的功能

本文深入探讨了C#编程中使用Enumerable.Aggregate、IQueryable.Cast、Concat、Distinct、GroupBy等方法的实用技巧,包括如何高效地操作序列、转换类型、连接序列、去除重复元素及分组数据。通过实例演示了这些方法的应用场景,旨在帮助开发者提高代码效率和解决问题的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*1.使用Enumerable.Aggregate<TSource, TAccumulate, TResult> 方法: 对序列应用累加函数,将指定的种子作为初始值,并且使用指定的函数选择结构值*/ string[] fruits= { "APPLE","banana","Pear","PEACH","watermelon" }; //初始值为Apple, //指定的函数用Lambda // 但是我这里有个疑问,这样选择之后只能有一个值,其实banana长度其实也是大于apple的,但是它的原理是用func结果替换以前的结果,要是能够返回结果集就好啦! string result= fruits.Aggregate ("APPLE" , (start, end) => end.Length > start.Length ? start = end : start ); Console.WriteLine(result); /*2.使用IQueryable.Cast<TResult> 方法 :将IQueryable元素转换为指定的类型*/ List<object> list = new List<object>() { "Apple", "Pear", "Orange" }; IEnumerable<string> T = list.AsQueryable().Cast<string>(); foreach (var t in T) { Console.WriteLine(t); } /*3.Enumerable.Concat(TSource)方法: 连接两个序列*/ class pet { public string name { get; set; } public int age { get; set; } static pet[] getDogs() { pet[] dogs ={ new pet{name="aa",age=2}, new pet{name="bb",age=3}, new pet{name="cc",age=4}, }; return dogs; } static pet[] getCats() { pet[] cats ={ new pet{name="dd",age=3}, new pet{name="ee",age=5}, new pet{name="ff",age=6}, }; return cats; } static void Main() { pet [] cats=getCats(); pet [] dogs=getDogs(); IEnumerable<string> query = cats.Select(cat => cat.name).Concat(dogs.Select(dog => dog.name)); //下面的这个方法也可以 //IEnumerable<string> query = cats.AsQueryable().Select(cat => cat.name).Concat(dogs.Select(dog => dog.name)); foreach (var v in query) { Console.WriteLine(v); } } } /*4.Enumerable.Distinct(TSource) 方法:返回非重复的元素*/ List<int> list = new List<int> { 12, 34, 56, 34, 89, 9, 12 }; IEnumerable<int> query = list.Distinct(); foreach (var v in query) { Console.WriteLine(v); } /*5.Enumerable.GroupBy<TSource,TKey> 方法:根据指定的键选择器函数对序列中的元素进行分组*/ public string name { get; set; } public int age { get; set; } static void Main() { List<pet> pets = new List<pet> { new pet{name="aa",age=24}, new pet{name="bb",age=28}, new pet{name="cc",age=25}, new pet{name="dd",age=28}, new pet{name="ee",age=24}, new pet{name="ff",age=28} }; var query = pets.AsQueryable().GroupBy(p => p.age); foreach (var v in query) { Console.WriteLine("key:{0},numbers of pet:{1}", v.Key, v.Count()); }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值