25LINQ拾遗及实例
投影
□ 遍历数组索引,Select获取
int[] indexes = {0, 2};
string[] strs = {"a", "b", "c", "d"};
var result = from i in indexes
select strs[i];
foreach (string str in result)
{
Console.Write(str + " ");
}
Console.ReadKey();
结果:a c
□ 使用集合索引投影匿名对象
static void Main(string[] args)
{
int[] numbers = {0, 3, 4, 5, 7};
var result = numbers.Select((n, index) => new {Num = n, IsValueEqualIndex = (n == index)});
foreach (var item in result)
{
Console.WriteLine("{0}:{1}",item.Num,item.IsValueEqualIndex);
}
Console.ReadKey();
}
结果:
□ 2个集合的笛卡尔积
int[] numberA = {0,2};
int[] numberB = {1,3};
var result = from a in numberA
from b in numberB
select new {a, b};
foreach (var item in result)
{
Console.WriteLine("{0},{1}",item.a,item.b);
}
Console.ReadKey();
结果:
□ 笛卡尔积应用,列出所有客户的所有订单
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public decimal Total { get; set; }
}
Order order1 = new Order(){Id = 1,Total = 10.00m};
Order order2 = new Order(){Id = 2,Total = 20.00m};
Order order3 = new Order(){Id = 3,Total = 30.00m};
List<Customer> customers = new List<Customer>()
{
new Customer()
{
Id = 1,
Name = "张三",
Orders = new List<Order>(){order1,order2}
},
new Customer()
{
Id = 2,
Name = "李四",
Orders = new List<Order>() { order3 }
}
};
var result = from c in customers
from o in c.Orders
select new {c.Id, c.Name, o.Total};
foreach (var item in result)
{
Console.WriteLine("客户编号:{0},姓名:{1},订单金额:{2}", item.Id,item.Name,item.Total);
}
Console.ReadKey();
结果:
分组
□ group n by 条件 into g, g.Key就是分组标准和条件, g代表分组里所有元素的集合
int[] numbers = { 5, 4, 1, 3, 9, 8, 6};
var result = from n in numbers
group n by n%5 into g
select new {Remainder = g.Key, Numbers = g};
foreach (var item in result)
{
Console.WriteLine("元素除以5的余数为:{0}",item.Remainder);
foreach (var n in item.Numbers)
{
Console.WriteLine(n);
}
}
Console.ReadKey();
结果:
连接
□ 根据2个集合的相同部分连接
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
}
List<Product> products = new List<Product>()
{
new Product(){Id=1,Name = "体恤衫",Category = "服饰"},
new Product(){Id = 2,Name = "香水",Category = "化妆品"}
};
string[] categoreis = new string[]
{
"服饰",
"化妆品",
"电子"
};
var result = from c in categoreis
join p in products on c equals p.Category
select new {Category = c, p.Name};
foreach (var item in result)
{
Console.WriteLine(item.Name + "属于:" + item.Category);
}
Console.ReadKey();
结果:
□ 把其中一个集合的所有元素放到一个别名集合中
List<Product> products = new List<Product>()
{
new Product(){Id=1,Name = "体恤衫",Category = "服饰"},
new Product(){Id = 2,Name = "香水",Category = "化妆品"}
};
string[] categoreis = new string[]
{
"服饰",
"化妆品",
"电子"
};
var result = from c in categoreis
join p in products on c equals p.Category into ps
select new {Category = c, Products = ps};
foreach (var item in result)
{
Console.WriteLine("类别:{0}包括:",item.Category);
foreach (var p in item.Products)
{
Console.WriteLine(" " + p.Name);
}
}
Console.ReadKey();
结果:
25LINQ拾遗及实例相关推荐
- 前端开发基础知识汇总
一.HTML 1.前言与常用标签 浏览器 内核 备注 IE Trident IE.猎豹安全.360极速浏览器.百度浏览器 firefox Gecko 可惜这几年已经没落了,打开速度慢.升级频繁.猪一样 ...
- Spring Cloud微服务系统架构的一些简单介绍和使用
Spring Cloud 目录 特征 云原生应用程序 Spring Cloud上下文:应用程序上下文服务 引导应用程序上下文 应用程序上下文层次结构 改变Bootstrap的位置Properties ...
- input标签拾遗--引申TIY实例(下)
另一个下拉列表 本例演示如何创建一个简单的带有预选值的下拉列表.(译者注:预选值指预先指定的首选项.) <html><body><form> <select ...
- 迁移 Nexus 软件仓库拾遗
本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载.或重新修改使用,但需要注明来源. 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2018年10月0 ...
- Spring Cloud Finchley版中Consul多实例注册的问题处理
由于Spring Cloud对Etcd的支持一直没能从孵化器中出来,所以目前来说大多用户还在使用Eureka和Consul,之前又因为Eureka 2.0不在开源的消息,外加一些博眼球的标题党媒体使得 ...
- Flutter 实例 - 加载更多的ListView
Dart4Flutter - 01 – 变量.类型和函数 Dart4Flutter – 02 –控制流 和异常 Dart4Flutter – 03 – 类和泛型 Dart4Flutter – 04 – ...
- c# xml文件新增同级节点_[C#.NET 拾遗补漏]08:强大的LINQ
大家好,这是 [C#.NET 拾遗补漏] 系列的第 08 篇文章,今天讲 C# 强大的 LINQ 查询.LINQ 是我最喜欢的 C# 语言特性之一. LINQ 是 Language INtegrate ...
- 基础拾遗------泛型详解
基础拾遗: 前言: 1.泛型的约束 2.泛型继承 3.关键字default 4.泛型方法 5.泛型接口 6.泛型数组 7.泛型委托 基础拾遗: 基础拾遗------特性详解 基础拾遗------ ...
- [C#.NET 拾遗补漏]08:强大的LINQ
阅读本文大概需要 13 分钟. 大家好,这是 [C#.NET 拾遗补漏] 系列的第 08 篇文章,今天讲 C# 强大的 LINQ 查询.LINQ 是我最喜欢的 C# 语言特性之一. LINQ 是 La ...
最新文章
- oracle如何复制表的索引,Oracle表与索引管理
- 从Google Wave和XML看软件复杂性之争,互联网营销
- PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)
- php thumbs.db,window_Win8系统删除thumbs.db文件的方法, 最近有Win8系统用户反映, - phpStudy...
- Hadoop + Amazon EC2 –更新的教程
- javascript arguments
- 虚拟环境安装Scrapy框架
- 父组件传递值给子组件(一)
- 吴恩达深度学习2.1练习_Improving Deep Neural Networks_initialization
- Taskctl是什么软件,有什么用?
- Python初学系列——天天向上的力量
- 信息收集之——FOFA网站常用搜索语法
- ubuntu中各个文件夹的作用
- day09---(02)课程大纲-小节添加修改删除(前端)
- 完美解决api-ms-win-crt-runtime-l1-1-0.dll详细步骤
- OCR识别技术保险保单识别系统|车险保单识别寿险保单识别|助力保险理赔
- 2022-06-29 银河麒麟V10 Nginx-rtmp+FFmpeg流媒体服务器环境搭建
- macOS下malware移除实战之Qsearch浏览器劫持的移除
- oracle数据库背景颜色,ORACLE FORM 开发:更新背景颜色
- android 二级折叠列表,Android折叠列表 ExpandableList