关于委托作为方法的参数的问题

shijies 2021-05-13 03:59:28
以Where为例,public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

以下例进行说明:
static void Main(string[] args)
{
int[] nums = new int[] { 10, 20, 30, 40, 50 };
int sum0 = nums.Sum();
Console.WriteLine("the sum of all:{0}", sum0);//所有数据的和
int sum1 = nums.Where(n=>n%4==0).Sum();
Console.WriteLine("the sum of all:{0}", sum1);//所有是4的倍数的数据的和
int sum2 = nums.Where((n, i) => i % 2 == 0).Sum();//10 + 30 + 50
Console.WriteLine("the sum of all:{0}", sum2);//所有下标是4的倍数的数据的和
}


委托调用的方法只有一行,使用了Lambda 方式,如果委托调用方法中有很多行代码,该如何处理?
...全文
2787 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
老夏 2022-04-23
  • 打赏
  • 举报
回复

就是单行代码省略了 { } 和 里面的 return

shijies 2021-05-15
  • 打赏
  • 举报
回复
LINQ to Object是将符合条件的集合中的元素返回,写代码涉及的是操作数组或集合。LINQ to Dataset是将符合条件的行加入结果集,将结果集返回,写代码涉及对数据表的操作。
shijies 2021-05-13
  • 打赏
  • 举报
回复
以上我举得例子是LINQ to Object,针对泛型集合中的每一个泛型对象进行筛选。如果是LINQ to Dataset,传入的是一个转换后的数据集对象,每一行也算一个对象?而使用的可能字段对象,代码的写法也不同了。 例如:var result = from b in ds.Tables["tb_Bookinfo"].AsEnumerable() where b.Field<DateTime>("b_pub_date").Month ==3 aelect new { ...... } 不是将委托作为方法的参数了,where后跟Predicate?
正怒月神 2021-05-13
  • 打赏
  • 举报
回复
例子

//一行写法
var q = myList.Where(x => x.ID == 1);

//多行写法
var q1 = myList.Where(x =>
{
if (x.ID == 1)
return true;
else
return false;
});
Console.ReadKey();
wanghui0380 2021-05-13
  • 打赏
  • 举报
回复
额,理解一下 Func<TSource, bool>就好,他的意思是传入一个Tsouce对象,返回一个bool 所以所以他本身不管你有多少行代码 所以我们可以写成 p=>{ bool res=false; //此处省略1000w行 retrun res }

8,494

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧