具体来说,我想运行下面的代码。问题不同于C和JS,它有一个逗号运算符(i=(1,2)
是2)C#没有。 AddRange不会返回它使用的列表,因此我被困在这个lambda上。如何在不使用大括号的情况下编写lambda并返回语句,如下面的代码?
var ls1 = new String[]{"one", "three"};
var ls2 = new String[]{"two", "four"};
var ls = (new[] {ls1, ls2}).Aggregate(new List<String>(), (l,r)=> (l.AddRange(r), l));
//var ls = (new[] {ls1, ls2}).Aggregate(new List<String>(), (l,r)=> {l.AddRange(r); return l;});
Console.WriteLine(string.Join(", ", ls));
答案 0 :(得分:0)
扩展方法适合您吗?它不像(1,2)运算符,但实现了避免在lambda中返回的目标
public static class Ext
{
public static List<string> AddRangeAndReturn(this List<string> list, IEnumerable<string> itemsToAdd)
{
list.AddRange(itemsToAdd);
return list;
}
}
使用示例:
var ls = (new[] {ls1, ls2}).Aggregate(new List<String>(), (l,r)=> l.AddRangeWithReturn(r) );