编辑
2025-09-22
C#
00

摘要

在C#中,LINQ(Language Integrated Query)是一种强大的查询语言,它允许你以声明式的方式查询和操作数据。其中,SelectSelectMany是两个非常重要的操作符,它们在处理集合时非常有用。

正文

运算符描述C#查询表达式语法
Select操作转换函数的基础项目值select
SelectMany操作项目的值是根据上的转换函数,以及拼合成一个单一的序列的序列使用多个from子句

Select操作符用于将一个集合中的每个元素投影(转换)成一个新的形式。这意味着你可以使用Select来改变集合中元素的形状或提取元素的某些部分。Select通常用于执行一对一的转换。

SelectMany操作符用于将集合的集合(或者说是集合中的元素的集合)展平为一个集合。这意味着它可以将多对一或多对多的关系转换为一对一的关系。SelectMany非常适用于处理嵌套集合的场景。

一个例子

C#
private void btnSearch_Click(object sender, EventArgs e) { List<string> words=new List<string>() { "张飞", "关羽", "刘备", "刘封", "刘禅" }; var ret = from it in words select it.Substring(0, 1); foreach (var item in ret) { lstMain.Items.Add(item); } }
编辑
2025-09-22
C#
00

摘要

查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织。 查询与它生成的结果不同。

从应用程序的角度来看,原始源数据的特定类型和结构并不重要。 应用程序始终将源数据视为 IEnumerableIQueryable 集合。

正文

LINQ查询表达式包含8个基本子句,分别为from、select、group、where、orderby、join、let和into

子    句说    明
from指定数据源和范围变量
select指定当执行查询时返回的序列中的元素将具有的类型和形式
group按照指定的键值对查询结果进行分组
where根据一个或多个由逻辑“与”和逻辑“或”运算符(&&或
orderby基于元素类型的默认比较器按升序或降序对查询结果进行排序
join基于两个指定匹配条件之间的相等比较来连接两个数据源
let引入一个用于存储查询表达式中的子表达式结果的范围变量
into提供一个标识符,它可以充当对join、group或select子句的结果的引用
编辑
2025-09-22
C#
00

摘要

语言集成查询 (LINQ) 为 C# 和 Visual Basic 提供语言级查询功能和高阶函数 API,让你能够编写具有很高表达力度的声明性代码。

LINQ就像是一个万能的数据查询语言,让你可以用同样的语法来搜索和操作各种数据源(数据库、XML、对象集合等),就像用同一把钥匙能开不同的锁一样

正文

LINQ 的历史

从语言方面的进化
–委托
–匿名方法
–Lambda表达式
–Linq查询表达式

LINQ是什么

  • LINQ是语言级集成查询(Language INtegrated Query)
  • LINQ是一种用来进行数据访问的编程模型,使得.NET语言可以直接支持数据查询
  • LINQ的目标是降低访问数据的复杂度
  • LINQ可以用统一的方法访问不同类型的数据,可以将数据作为对象使用
  • 能够更好地与编程模型集成
  • 可以在Visual Studio中进行智能提示
  • 动态编程
编辑
2025-09-22
C#
00

摘要

在C#中使用GDI+绘制贝塞尔曲线可以通过Graphics类的DrawBezier方法或者使用路径(GraphicsPath)对象然后添加贝塞尔曲线到路径中。如果想要添加多个贝塞尔曲线段,可以使用GraphicsPath对象的AddBezierAddBeziers方法。这里,我们将通过AddBezier方法的使用来介绍如何绘制贝塞尔曲线。

正文

想象你要画一条从A点到B点的曲线:

  1. 传统方法:直接用笔画,很难控制弧度
  2. 贝塞尔方法
    • 在A点和B点之间"悬浮"两个控制点
    • 这两个控制点就像磁铁,"吸引"着曲线向它们弯曲
    • 控制点越靠近曲线,弯曲越明显
    • 控制点越远离曲线,弯曲越平缓

公式推导

对于一阶贝塞尔的话,最终得到的曲线还是一条直线,不过还是可以列一下通式方便后续推导:

编辑
2025-09-22
C#
00

摘要

在C#中,使用GDI+(Graphics Device Interface Plus)可以绘制各种图形,包括多边形。DrawPolygon方法是用来绘制多边形的。这个方法需要一个Pen对象来定义多边形的边界样式(颜色、宽度等),以及一个点数组Point[]来定义多边形的各个顶点。

正文

DrawPolygon(Pen, PointF[])绘制由一组 PointF 结构定义的多边形。
DrawPolygon(Pen, Point[])绘制由一组 Point 结构定义的多边形。