C# 如何使用带lambda表达式的委托对数组中的奇数求和
假设我有一个数组C# 如何使用带lambda表达式的委托对数组中的奇数求和,c#,.net,C#,.net,假设我有一个数组 int[] nums = new int[]{2, 4, 5, 7, 9, 8} 如何使用带有lambda表达式的委托对数组中的奇数求和?我可以通过一个for循环来实现这一点,该循环有一个条件来检查这个数字是否是奇数,并轻松地将它们相加。只是想知道是否有任何方法可以通过委托和lambda表达式使代码更短 谢谢使用LINQ的Sum()并检查当前数字是否为奇数: var oddsSum = nums.Sum(x => x % 2 * x); 使用Where()筛选时,会显
int[] nums = new int[]{2, 4, 5, 7, 9, 8}
如何使用带有lambda表达式的委托对数组中的奇数求和?我可以通过一个for循环来实现这一点,该循环有一个条件来检查这个数字是否是奇数,并轻松地将它们相加。只是想知道是否有任何方法可以通过委托和lambda表达式使代码更短
谢谢使用LINQ的Sum()
并检查当前数字是否为奇数:
var oddsSum = nums.Sum(x => x % 2 * x);
使用Where()
筛选时,会显示一个或多个详细信息:
var oddsSum = nums.Where(x => x % 2 == 1).Sum();
我相信这就是你的要求。除非您希望在lambda部分之外创建委托方法,否则在这种情况下,您可以执行以下操作:
var nums = new int[] {1, 2, 3, 4, 5};
var del = new Func<int,int>((i) => i % 2 == 0 ? 0 : i);
var sum = nums.Sum(i => del(i));
var nums=newint[]{1,2,3,4,5};
var del=新函数((i)=>i%2==0?0:i);
var sum=nums.sum(i=>del(i));
var sum=nums.Where(n=>n%2==1.sum()代码>像这样还是你在期待什么?谢谢。有没有不使用linq就可以实现的方法?我想使用类似func delegate的东西来缩短代码。@CrazyCode,但正是LINQ添加了大量使用func委托的API;有一些预先存在的非LINQ API接受委托,但它们更为罕见。。。你通常只是循环<代码>整数和=0;如果(i%2!=0)和+=i,则为foreach(整数i,单位为nums)代码>谢谢。有没有不使用linq就可以实现的方法?我想使用func delegate之类的工具来缩短代码。您希望代码缩短多少?这不是已经很短了吗?.Sum(n=>n%2*n)
@CrazyCode委托和linq是两件不同的事情,对吗?
是的,你接受这个linq查询var res=nums.Sum(n=>n%2*n)代码>并将其写为var res2=nums.Sum(委托(int n){返回n%2*n;})代码>它变成了一个委托:)@Adrian至少你可以在回答中提到谁创建了最短的代码,-1还不错。谢谢你,史蒂夫。
var nums = new int[] {1, 2, 3, 4, 5};
var del = new Func<int,int>((i) => i % 2 == 0 ? 0 : i);
var sum = nums.Sum(i => del(i));