问题来源: 《深入理解C#(第3版)》 11页

具体如下:

     var lists=new List<string>{"111","222","333","1","2"};
foreach(var item in lists.where(x=>x.length>2))
{
Console.WriteLine(item);
}

如果愿意,完全可以使用Action 进行输入上述的item,而不是在foreach中加一层判断。


问题简单描述就是:简单来说就是直接在where中输出长度大于2的字符,不需要在在foreach中操作

当看到这句话的时候,心里默认这个自己可以写出来,当往后翻几页后,一直在想着这个问题。心中一直有个疙瘩,于是就想不如实现一下。果不其然发现lambda带有返回值没有想象中的那么简单,于是便有了下面的代码

  static void Main(string[] args)
{
var aaa = new List<string> { "111", "222", "333", "2", "3" }; Func<string, Action<string>, bool> aaafunc = funcTest;
Action<string> action = actionTest;
var result = aaa.Where(s => aaafunc(s, action));
Console.WriteLine($@"筛选后的行数为:{result.Count()}");
Console.WriteLine("hello word");
Console.ReadKey();
} public static bool funcTest(string s, Action<string> ss)
{
if (s.Length > 2)
{
ss.Invoke(s);
}
return s.Length > 2;
} public static void actionTest(string s)
{
Console.WriteLine(s);
}

代码如上,折腾半小时后终于折腾出来了,心中的疙瘩也终于消失了。

然后感谢同事张某人提供的一些思路和介绍。

最后,希望大家也能遇到问题感觉奇怪就直接coding,解决自己的疑惑

如有哪里讲得不是很明白或是有错误,欢迎指正

如您喜欢的话不妨点个赞收藏一下吧

C# lambda查询带返回值的更多相关文章

  1. EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值

    一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为  -1 ,sqlserver 里面  还没有测试过 using (var ctx = new MyDbConte ...

  2. 慕课网-Java入门第一季-7-3 Java 中无参带返回值方法的使用

    来源:http://www.imooc.com/code/1579 如果方法不包含参数,但有返回值,我们称为无参带返回值的方法. 例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值 ...

  3. Java 中带参带返回值方法的使用

    如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法. 例如:下面的代码,定义了一个 show 方法,带有一个参数 name ,方法执行后返回一个 String 类型的结果 调用带参带返回值的 ...

  4. Java 中无参带返回值方法的使用

    如果方法不包含参数,但有返回值,我们称为无参带返回值的方法. 例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果 在 c ...

  5. 测试 多线程 实现 callable 带返回值

    package threadTest; import java.util.ArrayList; import java.util.Date; import java.util.concurrent.C ...

  6. Mysql带返回值与不带返回值的2种存储过程

    过程1:带返回值: 1 drop procedure if exists proc_addNum; 2 create procedure proc_addNum (in x int,in y int, ...

  7. c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题

    c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题 例如: string myFunc(){ theLogics(); } 发现调用: myFunc(); 崩溃. 但调用: cout ...

  8. 13 继续C#中的方法,带返回值的方法介绍

    在这一个练习中,我们要使用带返回值的方法.如果一个方法带返回值,那么它的形式是这样的. 定义一个带返回值的C#方法 static 返回类型 方法名字 (参数类型 参数1的名字,参数类型 参数2的名字) ...

  9. Java多线程带返回值的Callable接口

    Java多线程带返回值的Callable接口 在面试的时候,有时候是不是会遇到面试会问你,Java中实现多线程的方式有几种?你知道吗?你知道Java中有可以返回值的线程吗?在具体的用法你知道吗?如果两 ...

随机推荐

  1. 053_修改 Linux 系统的最大打开文件数量

    #!/bin/bash#往/etc/security/limits.conf 文件的末尾追加两行配置参数,修改最大打开文件数量为 65536 cat >> /etc/security/li ...

  2. 020_统计 13:30 到 14:30 所有访问 apache 服务器的请求有多少个

    统计 13:30 到 14:30 所有访问 apache 服务器的请求有多少个 #!/bin/bash#awk 使用-F 选项指定文件内容的分隔符是/或者:#条件判断$7:$8 大于等于 13:30, ...

  3. js 跨域请求原理及常见解决方案

    一.同源策略: 说到跨域请求,首先得说说同源策略: 1995年,同源政策是由 Netscape 公司引入浏览器的.目前,所有浏览器都实行了这个政策. 同源策略是浏览器的一种安全策略,所谓同源是指,域名 ...

  4. RNN(一)——RNN和LSTM原理

    背景 神经网络,卷积神经网络等其他深度学习算法,都有个局限性,各个输入在算法内部是相对独立的.比如:'星际争霸有意思,我爱玩'这句话,是有上下文关系的. 如果放在其他网络里面,各个分词将会独立处理.但 ...

  5. python3 操作ppt

    # pip install pywin32com# ppt太大会读取失败import win32com from win32com.client import Dispatch, constants ...

  6. Selenium结合BeautifulSoup4编写简单爬虫

    在学会了抓包,接口请求(如requests库)和Selenium的一些操作方法后,基本上就可以编写爬虫,爬取绝大多数网站的内容. 在爬虫领域,Selenium永远是最后一道防线.从本质上来说,访问网页 ...

  7. JAVA RPC (九) netty服务端解析

    源码地址:https://gitee.com/a1234567891/koalas-rpc 企业生产级百亿日PV高可用可拓展的RPC框架.理论上并发数量接近服务器带宽,客户端采用thrift协议,服务 ...

  8. C语言中内存对齐规则讨论(struct)

    C语言中内存对齐规则讨论(struct) 对齐: 现代计算机中内存空间都是按着byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地 ...

  9. RES协议和断网访问URL出现的错误页面

    # 11 Id: 26a4.1470 Suspend: 1 Teb: 7ff9f000 Unfrozen # Memory ChildEBP RetAddr Args to Child 00 01ca ...

  10. Linux使用iptables设置黑白名单

    使用ipset工具 1,下面我先说下iptables的基本配置规则,然后再说ipset以下使用C7 x86_64为实验环境CentOS7默认的防火墙不是iptables,而是firewalle.如果你 ...