首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#3.0新增功能09 LINQ 标准查询运算符 04 运算

Select() 为每个源生成一个结果。 因此,总体结果是一个源集合具有相同元素数目的集合。 之相反,SelectMany() 生成单个总体结果,其中包含来自每个源串联子集合。...下图描述 Select() 如何返回一个源集合具有相同元素数目的集合。 ? 下图描述 SelectMany() 如何将中间数组序列串联为一个最终结果,其中包含每个中间数组每个。 ?...Enumerable.TakeWhileQueryable.TakeWhile 07 联接运算 联接两个数据源就是将一个数据源对象另一个数据源具有相同公共属性对象相关联。...GroupJoin 方法在关系数据库术语没有直接等效,但实现了内部联接和左外部联接超集。 左外部联接是指返回第一个(左侧)数据源每个元素联接,即使其他数据源没有关联元素。...join … in … on … equals … Enumerable.JoinQueryable.Join GroupJoin 根据键选择器函数联接两个序列,并对每个元素结果匹配进行分组。

9.6K20

一步步学习EF Core(3.EF Core2.0路线图)

从数据库更新模型允许以前从数据库逆向工程模型将随着您对架构更改而刷新。   3.3Modelling(实体模型) 复数/类型是不具有主键类型,用于表示实体类型上一组属性。...更多数据库支持 Azure Table Storage Redis 其他非关系型数据库 平台 通用Windows平台(UWP)目前适用于本地开发,但是.NET Native工具链.NET...拥有的实体和表分割(以启用复杂类型和/或对象模式)(#246) - 允许映射类型不具有自己身份,但始终依赖于其他对象,并将它们映射到与其父对象相同表。...下面是期望完成其他功能: 每个模型#7166只有一个提供商) - 显着增加了供应商如何模型进行交互,并简化了惯例,注释和流畅API如何不同提供商合作。...从数据库更新模型(#831) - 允许您逐渐更新以前从数据库反向设计模型,并更改了对数据库模式所做更改。这允许您更新模型以匹配当前模式,而不会丢失在反向设计后手动对模型进行任何更改。

3K90
您找到你想要的搜索结果了吗?
是的
没有找到

【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

返回结果: 最终,LINQ查询会返回一个结果集,该结果集可以是一个集合、一个单一其他形式,取决于查询目的和数据源。...以下是一些常见LINQ查询操作符返回类型以及如何处理查询结果: Where:返回条件匹配元素序列。...,其中每个元素是两个数据源匹配。...每次创建匿名类型实例时,实际上都创建了一个新类,其属性名和类型都与查询结果属性匹配。 由于匿名类型是临时,所以它只能在查询范围内使用,无法将其传递到方法之外。...六、LINQ和集合类型 6.1 如何在LINQ查询处理集合类型 在LINQ查询处理集合类型是非常常见情况,因为LINQ主要目的之一就是对集合进行查询、过滤、投影和操作。

1K61

C#历来语法特性总结

lambda不同是,使用delegate创建匿名函数可以省略参数列表,可将其转换为具有任何参数列表委托类型。...如果类型具有扩展方法相同名称和签名方法,则编译器会选择类型方法。编译器进行方法调用时,会先在该类型实例方法寻找,找不到再去搜索该类型扩展方法。...使用对象初始化列表,可以在创建对象时向对象任何可访问字段或属性分配,可以指定构造函数参数或忽略参数以及括号。...命名参数可为形参指定实参,方式是指定匹配实参与形参,这时无需匹配参数列表位置。可选参数通过指定参数默认,可以省略实参。...模式匹配用来测试表达式是否具有某些特征,is表达式、switch语句和switch表达式均支持模式匹配,可使用when关键字来指定模式其他规则。

33840

C# 发展历史及版本新功能介绍

我们来看看此版本一些主要功能: 自动实现属性 在 C# 3.0 及更高版本,当属性访问器不需要任何其他逻辑时,自动实现属性会使属性声明更加简洁。 它们还允许客户端代码创建对象。...可通过使用 new 运算符和对象初始创建匿名类型。 有关对象初始设定详细信息,请参阅对象和集合初始设定。...通过命名实参,你可以为特定形参指定实参,方法是将实参与该形参名称关联,而不是形参在形参列表位置关联。 通过可选参数,你可以为某些形参省略实参。...这两种技术都可方法、索引器、构造函数和委托一起使用。 使用命名参数和可选参数时,将按实参出现在实参列表(而不是形参列表顺序计算这些实参。...以下介绍了部分功能: 静态导入 异常筛选器 属性初始设定 Expression bodied 成员 Null 传播器 字符串内插 nameof 运算符 字典初始设定 这些功能每一个都很有趣。

4.1K20

ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景

一开始,在ASP.NET MVC项目中,右击/Models子目录,选择“添加新” -> “LINQ to SQL 类”,调出 LINQ to SQL ORM 设计器来对我们数据对象建模: ?...这个扩展方法叫做“UpdateFrom”,可以用在任何 .NET 对象上。它接受一个字典作为参数,然后,它会对任何匹配该对象公开属性键,自动对本身进行属性赋值。...注意Html.Select辅助方法有个重载版本,允许你指定下拉框选定是什么。在下面的代码片断,我表示我要Category下拉框根据编辑产品目前CategoryID自动选择某一: ?...这意味着,如果我们改变我们网站编辑功能路径选择规则的话,我们不需要改动控制器或视图中任何代码。...编译完毕之后,我们重新定向到产品列表网页,自动设置 /Products/Category/[CategoryID],以匹配我们正在操作产品保存状态。

5.1K70

实体列表缓存(最土方法实现百万级性能)

除此之外,XCode内部任何地方不会主动使用实体缓存。...使用缓存阈值 1000是一个大量实践得到: 小于1000时,内存搜索远胜于数据库,毕竟数据库还有网络开销和序列化为实体对象开销; 大于10000时,内存搜索就不如数据库了; 1000到10000...还是学生班级例子,为了在学生列表页展示班级名称,而学生表student只有班级编号classid字段,当时做法是建立Class扩展属性,借助Class.FindByID查询。...至此,学生班级多表关联查询,借助扩展属性列表缓存,成功转化成为学生表单表查询,班级名称匹配几乎毫无压力! 过期策略 所有缓存都必须有过期策略。实体缓存过期策略有以下: 初始化。...设置文件 EntityCacheExpire, 默认10秒 添删改过期。对实体添删改操作完成后,都会直接修改实体缓存对应,而不会清空整个列表

78510

ASP.NET MVC5高级编程——(3)MVC模式模型

首先数据库主外键定义: 主键 外键 定义: 唯一标识一条记录,不能有重复,不允许为空 表外键是另一表主键, 外键可以有重复, 可以是空 作用: 用来保证数据完整性 用来和其他表建立联系用...这个控制器带有的唯一操作就是Index操作,且在内部除了返回一个默认ViewResult实例代码之外,没有其他任何代码。这个模版不会生成任何视图。...5 什么是实体框架,什么是代码优先和数据上下文? 新建ASP.NET MVC5目会自动包含对实体框架(EF)引用。...,该属性包含当用户选择一个指定时使用(键值 ,像52或2) 第3个参数是每一要显示文本 第4个参数包含了最初选定 5.2 模型和视图模型终极版 针对专辑编辑情形,模型对象(Album对象...这时浏览器会自动收集用户在表单输入所有信息并将这些(及其相关name属性)放在请求中一起发送。这里注意input和select元素name属性,需要和Album模型属性匹配

4.6K40

编写高质量代码:改善C#程序157个建议

总是使用TryParse,不使用Parse 恰当使用Nullable类型 如果数据库字段可为null,那么对应C#实体属性也应当可以为null。使用int?...将0作为枚举默认 枚举要么全部显式赋值,要么全部不要赋值 个人建议全部显式赋值,因为很多时候是将枚举存在数据库当中,如果不显示赋值,那么当在枚举中间插入一个时候,后面的会全部改变。...重写Equals()时同时重写GetHashCode() 否则会出现潜在不易察觉BUG,例如在Dictionary,CLR内部查找实际是KeyHashCode...区别LINQIEnumerable和IQuerable 简单来说,IEnumerable针对LINQ to Objects,IQuerable针对LINQ...使用LINQ,不需要再使用集合比较器和迭代器 LINQ极大简化了集合操作,理解比较器和迭代器原理还是重要,但开发已经不再需要去实现它们了。

2.5K30

Entity Framework Core 2.0 新特性

包含定义导航实体是所有者。当查询所有者时,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到所有者相同表。...使用所属类型EF6使用复杂类型类似,(PS:这里解释一下EF6复杂类型,复杂类型是允许在实体组织标量属性实体类型非标量属性。像实体一样,复杂类型由标量属性其他复杂类型属性组成。)...这些过滤器自动应用于涉及这些实体类型任何LINQ查询,包括间接引用实体类型,例如通过使用Include或直接导航属性引用。...一旦请求处理完成,实例上任何状态都将重置,并且实例本身返回到池中。 这在思想概念上类似于ADO.NET连接池运作方式,并且能节省DbContext实例初始化成本。...3.3FromSql和ExecuteSqlCommand字符串插 C#6(C#6.0特性请移步:这里)引入了字符串插,这是一个允许C#表达式直接嵌入到字符串文字功能,提供了一种在运行时构建字符串好方法

3.8K90

走进 LINQ 世界

可以使用相同编码模式来查询和转换 XML 文档、SQL 数据库、ADO.NET 数据集、.NET 集合数据以及对其有 LINQ 提供程序可用任何其他格式数据。...在 LINQ ,查询执行查询本身截然不同;换句话说,查询本身指的是只创建查询变量,不检索任何数据。...在 LINQ ,您不必像在 SQL 那样频繁使用 join,因为 LINQ 外键在对象模型中表示为包含集合属性。...若要创建包含源元素多个属性元素,可以使用具有命名对象或匿名类型对象初始设定。...lambda 表达式查询语法表达式或任何其他 C# 表达式或语句中表达式相同;它可以包括方法调用和其他复杂逻辑。“返回”就是表达式结果。

4.5K30

C#6.0 新增功能

此功能实现用于创建不可变类型真正语言支持且使用更简洁和方便自动属性语法。 02 自动属性初始化表达式 自动属性初始设定可让你在属性声明声明自动属性初始。...无论 person 是什么,以下表达式均返回 string。 通常,将此构造“null 合并”运算符一起使用,以在其中一个属性为 null 时分配默认。...鉴于此行为,建议仔细编写 catch 和 finally 子句,避免引入新异常。 10 使用索引器初始化关联集合 索引初始设定是提高集合初始设定索引用途一致性两个功能之一。...left a forwarding address."}, { 500, "The web server can't come out to play today."} }; 可以将集合初始设定...11 集合初始设定扩展 Add 方法 使集合初始化更容易另一个功能是对 Add 方法使用扩展方法。 添加此功能目的是进行 Visual Basic 奇偶校验。

1.7K20

2022年了有哪些值得推荐.NET ORM框架?

如何选择合适自己ORM框架? 对于我们而言选择ORM框架目的其实都是为了让我们程序更好操作数据库,提高开发编程效率和程序维护拓展性。...因此我们在为自己负责项目选择合适ORM框架时候需要从项目的业务场景出发,选择最适合自己团队ORM框架(注意没有完美的框架,适合团队才是最好)。...对于更高级查询场景,Dapper Extensions 提供了一个谓词系统。这个库目标是通过不需要任何属性或基类继承来保持你 POCO 纯净。...主要特点: Dapper一样,它很快,因为它使用动态方法生成 (MSIL) 将列分配给属性。 像Massive一样,它现在也支持动态 Expandos。...Massive一样,它以单个文件形式提供,您可以轻松地将其添加到任何项目或编译(仅限 V5)。

5.7K11

【CSS】381- 提升你CSS选择器技巧

A[attr*=val] 属性包含了val; A[attr~=val] 属性是一个词列表,并且以空格隔开,其中词列表包含了一个val词。 以下包含了相对应每个例子: ?...结构选择器 结构选择器非常强大,它是基于元素在DOM位置进行匹配。 这类型选择器特殊地方在于它允许通过传入参数方式来操作。...因此,如果我们有一组列表,通过下面的选择器将匹配位置排序是第三列表: ul:nth-child(3) 这个参数不只是数字,它还可以是一个表达式,使得匹配能力更强大。...::marker 匹配列表项目标记符号(即 元素由 type 属性生成出标记符号)。 ::placeholder 匹配表单元素占位符文本。...使用纯CSS可以做很多很酷事情,这在几年前是不可能实现。 非常炫目的效果和动画现在都可以纯CSS实现,不用任何JavaScript,这真的让人感到兴奋。

1K40

CodeWave系列:5.CodeWave 智能开发平台 逻辑功能实现

事件逻辑统一展示在页面下“事件逻辑”文件夹。事件逻辑包括双击,点击,鼠标按下,鼠标释放等。下面以“点击”为例进行示范: (1)选中按钮或其他页面组件,切换到组件属性面板事件子面板来添加。...5.高级用法 5.1 匹配组件实践 匹配组件可根据变量、表达式或类型进行匹配,若匹配一致则执行该分支。例如:在商品列表根据不同商品类型使标签展示不同颜色。 (1)已有商品管理页面如下图所示。...(3)在动态绑定拖拽匹配组件,并在上方拖入商品状态对应变量current.commodity.state,平台会根据枚举枚举自动生成分支,分别对应各个枚举。...平台会自动生成索引设置,其中索引起始为0,结束列表长度,表示循环列表每一。...(6)在foreach循环中,放置内置函数Add,并将局部变量listintAdd放置在list参数,在item参数拖拽算数运算“+”,左侧选择item,表示列表,右侧放置数字原子项并输入5,表示给每一都加

7910

.NET 2.0运行时LINQ

启用LINQ应用程序是否可以在仅安装了.NET 2.0运行时计算机上运行? 从理论上讲,LINQ只不过是语法糖,而得到IL代码应该.NET 2.0代码相同....Microsoft许可 3> John Downey..: 理论上是的,只要您分发LINQ特定程序集和任何依赖.但这违反了微软许可.Scott Hanselman写了一篇关于在ASP.NET 2.0...基本上,任何只有"语法糖"东西和新编译器(C#3.0,VB 9.0)都会发布兼容2.0IL.这包括LINQ使用许多功能,例如匿名类,作为匿名委托lambdas,自动属性,对象初始设定和集合初始设定...LINQ to SQL和LINQ实体需要许多新类(DataContext/ ObjectContext,大量属性,EntitySet,EntityRef,Link,IQueryable,等)和表达式树...,然后可以使用它们来生成SQL代码(或者您想要任何其他内容).

16710

盘点 .NET 比较流行开源ORM框架

前言 对于我们而言选择ORM框架目的,其实都是为了让我们程序更好操作数据库,提高开发编程效率和程序维护拓展性。 所以我们选择ORM需要从项目实际业务出发,选择最合适自己团队框架。...初期开发过程吸取了NBearMySoft一些精华并加入新思想,之后参考EF Lambda语法进行大量扩展。 经过数十个版本更新迭代发布全新v2.0版本,支持动态列/表、分库/分表等。...异步或同步,选择权在您。(又名异步)(V6) 严格未修饰 POCO 或归属几乎 POCO 一起使用。 易于配置,包括开箱即用流畅配置。...插入/删除/更新/保存和 IsNew 辅助方法 分页请求会自动计算出总记录数并获取特定页面。 简单交易支持。 更好参数替换支持,包括从对象属性获取命名参数。...(V5) 用于记录异常、安装转换器和将列映射到没有属性属性挂钩。

3.9K41

C#规范整理·集合和Linq

以往只能依靠构造方法传进去,或者在对象构造完毕后对属性进行赋值。现在这些步骤简化了,初始化设定实际相当于编译器在对象生成后对属性进行了赋值。...,它更重要作用是为LINQ查询匿名类型进行属性初始化。...由于LINQ查询返回集合匿名类型属性都是只读,如果需要为匿名类型属性赋值,或者增加属性,只能通过初始化设定来进行。初始化设定还能为属性使用表达式。...使用LINQ可以不用创建任何类型就能满足任何迭代需求。 10.谨慎集合属性可写操作# 如果类型属性中有集合属性,那么应该保证属性对象是由类型本身产生。...简单类型必须是一个非空初始,复杂类型则是一个以new开头初始化; 匿名类型属性是只读,没有属性设置器,它一旦被初始化就不可更改; 如果两个匿名类型属性相同,那么就认为两个匿名类型相等; 匿名类型可以在循环中用作初始化器

15330
领券