返回顶部
首页 > 资讯 > 精选 >C# Lambda Expression怎么用
  • 114
分享到

C# Lambda Expression怎么用

2023-06-17 21:06:57 114人浏览 八月长安
摘要

这篇文章主要介绍了C# Lambda Expression怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们处理一些删除操作,会选择写sql语句或者执行存储过程,例如:

这篇文章主要介绍了C# Lambda Expression怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

我们处理一些删除操作,会选择写sql语句或者执行存储过程,例如:

ItemDataContext db = new ItemDataContext();  db.ExecuteCommand(  "DELETE FROM Item WHERE [CreateTime] < {0}",   DateTime.UtcNow.AddMonths(-1));

C# Lambda Expression的出现

在程序里出现直接的SQL语句是一件很丑陋的事情。在我看来,数据库操作应该被封装起来,而对于应用层的开发人员来说,眼中应该只有对象——退一步的话也可向数据库发送指令(就是使用存储过程)。当然,这是理想状态,值得追求,但不可强求。幸运的是C# 3.0所拥有的强大特性足以让我们对LINQ to SQL的功能进行扩展。为了更好地进行项目开发,以及周五的一次技术交流,我为LINQ to SQL扩展了批量删除功能。当项目中引用了这个扩展之后,我们就可以使用如下的代码来实现上面的功能了:

ItemDataContext db = new ItemDataContext();  db.Items.Delete(item =>   item.CreateTime < DateTime.UtcNow.AddMonths(-1));

当然,扩展还支持更复杂的删除条件,例如:

ItemDataContext db = new ItemDataContext();  db.Items.Delete(item =>  item.CreateTime < DateTime.UtcNow.AddMonths(-1) ||   item.ViewCount < item.CommentCount && item.UserName != "jeffz");

之前我对于LINQ to SQL的扩展大都基于DataContext,不过很明显,这次的扩展是基于Table<T>的。总的来说,这个扩展比我想象中要简单不少。针对LINQ的扩展最麻烦的地方就在于解析表达式树(Expression Tree),而这个扩展关键的就是二元表达式(BinaryExpression),除了这点就没有太大问题了——当然,这也是因为我放弃了对于复杂表达式树的解析,例如现在就不支持“item.Introduction.Length < 10”这种条件,而对于更完整的解析方式来说,应该将其转化为T-SQL中的LEN函数。

C# Lambda Expression的使用:

这个扩展的关键在于根据表达式树生成Where Condition,我使用三个步骤完成这个扩展,大家可以关注代码里的相关实现(如果需要的话我也可以在以后进行说明):

◆使用PartialEvaluator将表达式中的常量直接计算出来(例如“3 * 3”表达式将被替换为“9”),同时也会将一些存储在变量中的值使用常量进行替换。

◆使用ConditionBuilder将表达式中的常量收集起来,并生成带参数的Condition表达式(例如“[CreateTime] < {0} AND [UserName] <> {1}”)。

◆使用DataContext.ExecuteCommand方法执行完整的SQL语句。

有了批量删除的功能,那么还缺点什么呢?那自然就是批量更新的功能了。批量更新的功能比删除略为复杂一些,我正在开发之中。在有了这个扩展之后,我们就可以使用如下的方法进行批量更新了:

ItemDataContext db = new ItemDataContext();  db.Items.Update(  item => new Item  {  Introduction = item.Title + "Hello World",  ViewCount = item.ViewCount + 1,  }, // 更新方式  item => item.CommentCount > 100 );

感谢你能够认真阅读完这篇文章,希望小编分享的“C# Lambda Expression怎么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: C# Lambda Expression怎么用

本文链接: https://lsjlt.com/news/293593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C# Lambda Expression怎么用
    这篇文章主要介绍了C# Lambda Expression怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我们处理一些删除操作,会选择写SQL语句或者执行存储过程,例如:...
    99+
    2023-06-17
  • C# Lambda Expression概念是什么
    本篇内容主要讲解“C# Lambda Expression概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C# Lambda Expression概念是什么”吧!1.关于C# Lambd...
    99+
    2023-06-17
  • C# Lambda表达式怎么用
    这篇文章主要为大家展示了“C# Lambda表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C# Lambda表达式怎么用”这篇文章吧。C#语言还是比较常见的东西,这里我们主要介绍C#...
    99+
    2023-06-17
  • C++ lambda函数怎么使用
    本篇内容介绍了“C++ lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda 表达式Lambda 表...
    99+
    2023-07-05
  • C++和C#中的lambda方法怎么使用
    这篇文章主要讲解了“C++和C#中的lambda方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++和C#中的lambda方法怎么使用”吧!一、语法定义首先我们看下 C++ 语法...
    99+
    2023-07-02
  • C++中的Lambda函数怎么使用
    这篇文章主要讲解了“C++中的Lambda函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的Lambda函数怎么使用”吧!一 函数语法我们平时调用函数的时候,都是需要被调用...
    99+
    2023-06-22
  • C++11的lambda表达式怎么使用
    这篇文章主要讲解了“C++11的lambda表达式怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11的lambda表达式怎么使用”吧!可变lambda假设有如下vector,保...
    99+
    2023-06-19
  • C#表达式树Expression怎么创建
    本篇内容介绍了“C#表达式树Expression怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是表达式树表达式树以树形数据结构表...
    99+
    2023-06-22
  • C++11中的lambda表达式怎么使用
    本篇内容介绍了“C++11中的lambda表达式怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!可调用对象对于一个表达式e,如果可以编...
    99+
    2023-06-19
  • C++11中的lambda匿名函数怎么使用
    本篇内容主要讲解“C++11中的lambda匿名函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11中的lambda匿名函数怎么使用”吧!lambda 源自希腊字母表中第 11 ...
    99+
    2023-07-04
  • C# Lambda表达式树怎么实现
    这篇文章主要介绍“C# Lambda表达式树怎么实现”,在日常操作中,相信很多人在C# Lambda表达式树怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# Lambda表达式树怎么实现”的疑惑有所...
    99+
    2023-06-17
  • lambda函数怎么用
    这篇文章主要介绍lambda函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!lambda函数也叫匿名函数,就是没有函数名的函数。lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象。la...
    99+
    2023-06-02
  • 怎么用C#表达式树Expression动态创建表达式
    本篇内容介绍了“怎么用C#表达式树Expression动态创建表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在一些管理后台中,对数据进...
    99+
    2023-06-22
  • C#中的Lambda表达式怎么优化
    本篇内容介绍了“C#中的Lambda表达式怎么优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用Lambda表达式将会造成Lambda表...
    99+
    2023-06-17
  • C#怎么动态创建lambda表达式
    这篇文章主要讲解了“C#怎么动态创建lambda表达式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么动态创建lambda表达式”吧!C#动态创建lambda表达式代码如下: ...
    99+
    2023-07-05
  • C++11的const, const expression和constexpr有什么作用
    这篇文章主要讲解了“C++11的const, const expression和constexpr有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11的const, const...
    99+
    2023-06-19
  • lambda函数python怎么用
    python 中的 lambda 函数是匿名函数,用于定义执行单个表达式的函数。它具有简洁、匿名和一次性使用的优点。lambda 函数的语法为:lambda 参数列表: 表达式,其中参数...
    99+
    2024-05-13
    python
  • Lambda 表达式在 C++ 中有什么用途?
    在 c++++ 中,lambda 表达式用作匿名函数,用途广泛:简化匿名函数的创建作为函数参数传递执行临时性处理优化算法(如指定比较函数) 在 C++ 中使用 Lambda 表达式的用...
    99+
    2024-04-17
    c++
  • CSS中怎么使用expression表达式
    这篇文章主要介绍“CSS中怎么使用expression表达式”,在日常操作中,相信很多人在CSS中怎么使用expression表达式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • C#中Lambda表达式的用法
    从C#3.0开始,可以使用lambda表达式把实现代码赋予委托。lambda表达式与委托(https://www.jb51.net/article/244051.htm)直接相关。当...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作