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

Excel催化剂开源第30波-在Excel上尽情地使用LINQ

对于笔者这样的数据分析工作者来说,对数据库有较深的掌握,当然少不了对SQL查询的深度使用,如果在编程的世界中,可以复用这样的能力,真的是一件多么令人高兴的事情。...在.Net的世界中,恰恰提供了这样的能力,用LINQ,仿佛回到了写SQL语句查询的环境中,对编辑中的使用的各种对象集合,在排序、筛选、去重等SQL语句常用的功能上,在LINQ的帮助下,一样可以对代码中的集合对象进行这些操作...例如经常需要遍历单元格区域,肯定少不了For Each+IF等代码,但使用了LINQ后,真心变得很简单,特别是操作一个多列的表单结构的数据时,前面提到笔者喜欢将其转换为DataTable,因为这样的数据结构就可以用上了...除了前面提到的区域转DataTable的方法外,其实笔者还用到过LinqToExcel这个类库,同样也是非常好用,有兴趣的朋友们,可以搜索了解下,示例文件也是做得很丰富易懂。...LINQ可以调用的方法,只需使用一下Cast转换一下即可,十分方便。

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    每个 .NET 开发人员解决常见问题时都应该了解的 5 个 EF Core 功能

    通过将复杂的 SQL 查询转换为简单的 C# 代码,EF Core 消除了处理数据的许多麻烦。但问题是 — 许多开发人员没有充分利用 EF Core 提供的强大功能。...全局查询过滤器:避免重复的过滤逻辑 问题:您是否厌倦了在每个查询中为“软删除”实体添加相同的筛选条件? 解决方案:使用 EF Core 中的全局查询筛选器在实体的所有查询中自动应用条件。...EF Core 通常会在每次使用时编译每个 LINQ 查询,这会增加开销。使用 Explicitly Compiled Queries,您可以重用查询的预编译版本以提高性能。...无论是将枚举转换为字符串,还是管理不同类型的单位,值转换都可以弥合 C# 代码与数据在数据库中的表示方式之间的差距。 假设我们的类中有一个 for 的枚举。...我们可以将此枚举存储为可读字符串,而不是将此枚举作为整数存储在数据库中。

    12410

    .NET面试题系列 - LINQ to Object

    LINQ to Object将查询语句转换为委托。LINQ to Entity将查询语句转换为表达式树,然后再转换为SQL。...LINQ的一些问题:要时刻关注转换的SQL来保持性能,另外,某些操作不能转换为SQL语句,以及很难替代存储过程。...在面试时,大部分面试官都不会让你手写LINQ查询,至少就我来说,写不写得出LINQ的Join并没所谓,反正查了书肯定可以写得出来。但面试官会对你是否理解了LINQ的原理很感兴趣。...LINQ的查询就是获得序列,然后通常在中间过程会转换为其他序列,或者和额外的序列连接在一起。...对这两种写法的优劣有很多说法: 每个查询表达式都可以被转换为点标记的形式,而反过来则不一定。很多LINQ操作符不存在等价的查询表达式,例如Reverse,Sort等等。

    3.4K20

    .NET 2.0运行时的LINQ

    启用LINQ的应用程序是否可以在仅安装了.NET 2.0运行时的计算机上运行? 从理论上讲,LINQ只不过是语法糖,而得到的IL代码应该与.NET 2.0中的代码相同....LINQBridge,那么它将绑定到LINQBridge的查询运算符; 如果它在编译期间引用System.Core,那么它将绑定到Framework 3.5的查询运算符. +1我经常使用它.注意:这是LINQ...to Objects(IEnumerable扩展)的实现,如果使用针对框架2.0+的VS2008(C#3.0),则可以很好地工作.它不是LINQ to SQL或其他LINQ提供程序的实现. 2> Michael....NET 2.0中不存在 在Main方法中使用LINQ查询.例如下面的那个....LINQ使用合成转换将查询转换为可执行代码.基本上,它将采用这样的代码: ? dim q = from x in xs where x > 2 select x*4; 并将其转换为如下代码: ?

    20010

    .NET面试题系列 - LINQ:性能

    (这意味着存在一个LINQ语句到SQL的表达式转换) 数据规模是否巨大? 是否需要重复极其多次运行相同的LINQ语句?...可以看到Foreach的表现稍好一点。LINQ的额外开销在于将lambda表达式转换为委托的形式,而foreach不需要。...例如EF使用了反射,但如果你的ORM只用于你开发的软件,所有的情况你都可以事先预计,那你也可以不用反射 而大部分ORM开发出来的目标仅仅是: 令查询语法更加接近SQL 加入了若干语法糖或代码生成快捷方式...LINQ性能问题:总结 使用LINQPad等工具观察生成的SQL。当你优化之后,再次在LINQPad上运行看看是否造成了可观的性能提升。 是否需要在数据库上筛选数据,并运行LINQ语句?...上MSDN,nuget查询是否已经有了现成的方法(例如获得最后一个元素)。 撰写单元测试来保证你的优化的正确性。

    2.6K40

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

    LINQ的用途包括但不限于: 数据库查询:可以用LINQ查询关系型数据库,代替传统的SQL查询。 集合操作:可以对集合进行过滤、排序、分组等操作,替代传统的循环遍历。...数据转换:可以将一种数据形式转换为另一种,如将数据库结果转换为对象集合。...查询翻译: 当查询被执行时,LINQ提供程序会将LINQ查询转换为特定数据源(如集合、数据库、XML等)的查询语言这意味着无论数据源是什么,LINQ查询的语法都是一致的。...对于返回单个元素的操作符,你可以将结果存储在变量中,然后进一步进行处理。 如果你需要将结果转换为列表或数组,可以使用ToList()或ToArray()方法。...7.1 使用Entity Framework和LINQ to SQL进行数据库操作 当使用 C# 编程语言时,可以使用 Entity Framework 和 LINQ to SQL 来进行数据库操作。

    2.3K61

    LINQ&EF任我行(二)–LinQ to Object (转)

    LinQ to SQL、LinQ to DataSets、LinQ to Entities和LinQ to XML则不是把查询表达式转换成MSIL,而是把查询表达式树转换成相应的特定查询语言。...LinQ to SQL会生成T-SQL,LinQ to Entities会生成eSQL,LinQ to XML会生成XPath语句等。 LinQ标准查询操作符列表 ?...《图2》 在左边选择示例,右侧上方会出现相应的LinQ代码,右侧下方会出现代码的运行结果。通过这个样例程序,我们可以学习LinQ的各种用法。...《图5》 在C#3.0查询表达式语法中没有GroupJoin语法,可以使用Join…into…来实现,它与Join不同的是,它可以实现类似于SQL外联接的效果,而Join只实现类似于SQL内联的效果。...类似于SQL中的group by 子句,但它是对象的序列,还可以获取每组中的每个元素对象。

    2.4K30

    C#进阶-LINQ表达式基础语法

    本篇文章我们将演示LINQ扩展包的基础语法,以Select查询、Count计数、Average平均值、OrderBy排序函数为例,目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,...数据源:二、LINQ表达式基础语法示例1、Select 查询/* SQL里的表达: 查找用户里职业是医生的人的姓名,按照年龄倒序输出 */select name from user where occupation...;All()函数判断是否全部元素都符合条件;下面以Any()函数为例:/* SQL里的表达: 查找用户里是否存在年龄小于30岁职业是医生的女性 */select count(*) from user where...强类型:Linq是强类型的,这意味着在编译时就可以检查类型错误,提高程序的稳定性。多数据源支持:Linq不限于查询数据库,还可以操作数组、列表等多种数据结构。...to Entities关系型和非关系型数据库高5/5支持复杂的数据查询和操作Linq to Objects内存中的对象集合低5/5适用于小型集合的快速查询3、LINQ表达式总结Linq技术为.NET开发者提供了一个强大的工具

    27865

    LINQ to SQL(1):基础入门

    LINQ to SQL是在SQL SERVER数据库上设置一个强类型化界面的方式,LINQ to SQL提供的方式是目前我所见到查询SQL SERVER最简单也是最有效的方式,他可以使用自定义的类型与数据表甚至存储过程进行对应...,而不像我们使用ADO.NET那样,把更多的功夫用在数据类型转换等等的问题上,当程序运行的时候,LINQ to SQL会将我们使用自己的语言定义的模型中的语言继承查询转换为SQL,然后将他在数据库上执行...,然后将返回的结果转换为我们自定义的类对象,使用过nhibernate或者ibatis.net的朋友,可能就很熟悉这种方式啦,我个人认为,LINQ to SQL在某些地方弥补了这两种框架的缺陷,而且,如果我们可以在项目中使用...LINQ语句 注意:本节以及以后的数据库示例,我想会放到文章最后,有兴趣的朋友可以直接下载,如果您有sql 2000/2005的示例数据库,就不需要啦 找到northwind(下载),附加到您的数据库就可以啦...to SQL模型,怎么样,LINQ to SQL的查询方式,是不是很让人心潮澎湃啊

    1.4K60

    C#3.0新增功能08 Lambda 表达式

    编写 LINQ 查询表达式。 创建表达式树。 Lambda 表达式是可以表示为委托的代码,或者表示为表达式树的代码,它所表示的表达式树可以编译为委托。...如下面的示例所示,你可以将此表达式分配给委托类型: Func square = x => x * x; Console.WriteLine(square(5)); // 输出: //...如果在 System.Linq.Queryable 类中调用 Queryable.Select 方法(就像在 LINQ to SQL 中一样),参数类型是表达式树类型 Expression查询运算符的 lambda 在其他实现中,LINQ to Objects 有一个输入参数,其类型是泛型委托 Func 系列中的一种。...Lambda 中的每个输入参数必须都能够隐式转换为其对应的委托参数。 Lambda 的返回值(如果有)必须能够隐式转换为委托的返回类型。

    1.6K40

    .NET面试题系列 - LINQ to SQL与IQueryable

    名言警句 "理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列。" - Jon Skeet LINQ to Object和LINQ to SQL有何区别?...LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终在C#内部执行。...将查询表达式转换为SQL语句并不保证一定可以成功。 IQueryable 理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列。...to SQL 下面试图实现一个非常简单的查询提供器(即LINQ to xxx),其可以将简单的where lambda表达式转换为SQL,功能非常有限。...在LINQ to SQL中lambda表达式首先被转化为表达式树,然后再转换为SQL语句。 我们试图实现一个可以将where这个lambda表达式翻译为SQL语句的查询提供器。

    1.7K10

    为什么LINQ to XML的性能要优于XmlDocument?

    LINQ to XML 的一个最重要的性能优势(与 XmlDocument 相比)为:LINQ to XML 中的查询是静态编译的,而 XPath 查询则必须在运行时进行解释。...将表达式转换为内部表达式树。 循环访问节点,为基于表达式计算的结果集选择适当的节点。 与相应的 LINQ to XML 查询完成的工作相比,这需要执行非常多的工作。...当必须操作大型数据集合,特别是在包含一系列链接的查询或操作的程序中操作时,延迟执行可以大大改善性能。 在最佳情况下,延迟执行只允许对源集合的单个循环访问。...也就是说当比较两个原子化名称是否相等时,只需确定这两个引用是否指向同一个对象,而不必进行很”耗费时间“的字符串比较,这个是有助于性能提升的。 尾声 虽然这不是拍电影,但是尾声还是必须的。...虽然Linq to SQL的名声不大好,但是LINQ to XML却应该是实至名归。

    1.1K50

    .NET中数据访问方式(一):LINQ

    可查询类型无需额外操作即可进行LINQ操作,若数据源在内存中不以可查询类型的形式存在,那么LINQ提供程序必须要先将数据源转换为可查询类型,如LINQ to XML将XML文件转换为可查询的XElement...NET中预定义的LINQ提供程序包括:LINQ to Object、LINQ to XML (C#)、LINQ to SQL、LINQ to DataSet、LINQ to Entities。...LINQ to SQL不建议使用,用LINQ to Entities来替代。...LINQ的优缺点 优点 对不同的数据源提供了几乎一致的查询操作,这可使我们更多的去关注业务逻辑而非对数据源的操作 提供编译期的类型检查 在书写LINQ查询表达式时可以使用Visual Studio的智能提示...工具推荐 LINQ Pad是一款轻量级的数据查询工具,在LINQ Pad中可以使用LINQ表达式、扩展方法、SQL语句等对数据库进行操作,简单易用功能强大。 ?

    2.7K30

    Entity Framework 的一些性能建议

    自从我用了EF,每次都很关心是否有潜在的性能问题。所以每次我写LINQ查询,都会使用SQL Profiler看一下实际生成的SQL语句,以便发现潜在的性能问题。...因为单纯声明一个linq表达式并不会立即执行SQL查询,然而一旦在后面加上ToList(),就会立即去执行。...但这时,很不幸的是,where语句中的条件并不是转换为native sql去执行的,它是在内存中筛选的。这是一个比较阴的性能问题。...所以文章一开始我就建议大家多用SQL Profiler看看自己的LINQ是怎么执行的。 如果把返回类型换成IQueryable,那么你的where语句就可以转化为SQL执行。...如果要让代码尽量去生成LINQ to SQL,有个很简单的原则,就是尽量用LINQ、Lambda表达式,这样EF才可能帮我们翻译。C#里的Count有两种。

    1.7K30

    C#秒杀Java的五个不可替代的特性,完美的编程语言并不存在

    使用它,我们可以在无需考虑正在调用的特定数据库的语法来编写查询语句。LINQ provider 所提供的一个组件将查询转换为下层数据源可读的格式。...例如,如果我们需要从 SQL 数据库查询数据,LINQ to SQL provider 程序将把 LINQ 查询转换成 T-SQL,以便数据库可以理解它。...这里两种语法都是正确的,唯一的区别就是查询语法看起来更像是 SQL 语句而方法语法使用 lambda 表达式(当然,看起来很像我们在 Java 里写的某些代码) 综述:LINQ 所依赖的许多特性,如 lambda...表达式(就 LINQ 来说非常有用),已经在 Java 中有了等效的实现,尽管我们可以使用流和 lambda 来查询数据,但 LINQ 简化了整个过程并且移除了很多在 Java 中存在的冗余代码。...我们是否遗漏了某些你希望 Java 拥有的特性?请在评论中告诉我们!

    3K100

    C#3.0新增功能09 LINQ 基础05 使用 LINQ 进行数据转换

    语言集成查询 (LINQ) 不只是检索数据。 它也是用于转换数据的强大工具。 通过使用 LINQ查询,可以使用源序列作为输入,并通过多种方式对其进行修改,以创建新的输出序列。...通过排序和分组,你可以修改序列本身,而无需修改这些元素本身。 但也许 LINQ 查询最强大的功能是创建新类型。 这可以在 select 子句中完成。...例如,可以将数据从 SQL 行或文本文件转换为 XML。 这只是几个例子。 当然,可以以各种方式在同一查询中组合这些转换。 此外,一个查询的输出序列可以用作新查询的输入序列。...将内存中对象转换为 XML LINQ 查询可以轻松地在内存中数据结构、SQL 数据库、ADO.NET 数据集和 XML 流或文档之间转换数据。...例如,不能在 LINQ to SQL 中调用普通的 C# 方法,因为 SQL Server 没有用于它的上下文。 但是,可以将存储过程映射到方法并调用这些方法。 有关详细信息,请参阅存储过程。

    1.6K20
    领券