C#中是否有类似逗号的运算符?

C#中是否有类似逗号的运算符?,c#,lambda,C#,Lambda,具体来说,我想运行下面的代码。这个问题与C和JS不同,后者有一个逗号操作符(i=(1,2)is 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

具体来说,我想运行下面的代码。这个问题与C和JS不同,后者有一个逗号操作符(
i=(1,2)
is 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));
var ls1=新字符串[]{“一”,“三”};
var ls2=新字符串[]{“2”,“4”};
var ls=(new[]{ls1,ls2}).Aggregate(new List(),(l,r)=>(l.AddRange(r,l));
//var ls=(new[]{ls1,ls2}).Aggregate(new List(),(l,r)=>{l.AddRange(r);返回l;});
Console.WriteLine(string.Join(“,”,ls));

扩展方法适合您吗?它不像(1,2)算子,但在lambda中实现了避免返回的目标

public static class Ext
{
    public static List<string> AddRangeAndReturn(this List<string> list, IEnumerable<string> itemsToAdd)
    {
        list.AddRange(itemsToAdd);

        return list;
    }
}
公共静态类Ext
{
公共静态列表AddRangeAndReturn(此列表,IEnumerable itemsToAdd)
{
list.AddRange(itemsToAdd);
退货清单;
}
}
使用示例:

var ls = (new[] {ls1, ls2}).Aggregate(new List<String>(), (l,r)=> l.AddRangeWithReturn(r) );
var ls=(new[]{ls1,ls2}).Aggregate(new List(),(l,r)=>l.AddRangeWithReturn(r));

您是否与聚合绑定?那么var ls=ls1.Concat(ls2.ToList()呢如果您的真正目标是只编写一个包含多个语句的表达式,则可能需要手动构建表达式,而不使用lambda,而是使用
System.Linq.Expressions
。@ScottChamberlain:我的目标是在我调用的函数返回void时处理lambda:(.我绝对不想写return,因为它破坏了lambda的美观。如果返回值是某种东西,我还可以用
?:
。将lambda放在AddRange()中。ls.AddRange(lambda)@jdweng:你在试着做inception吗?AddRange需要l,l来自Aggregate,我如何把Aggregate放在AddRangels.AddRange(string.Aggregate((ls1,ls2)=>ls1+ls2));如果我有很多AddRange和return,我可能只做注释掉的一行或者这个。真糟糕,没有什么比逗号操作符更好的了