如何用LINQ将对象的两个属性元素合并为一个数组
解决方案
首先要指出你原来的代码存在一个问题:array.Concat(...)不会修改原数组(数组属于不可变类型),这条语句执行后没有赋值给任何变量,所以实际上你并没有得到包含prop1和prop2的合并数组。
要实现你想要的简化写法,直接在Method参数里生成合并后的数组,有两种常用方式:
方式一:使用SelectMany扁平化序列
通过SelectMany把每个对象转换成包含prop1和prop2的临时数组,再将所有临时数组扁平化合并成一个序列,最后转成数组:
Method(myDatas.SelectMany(md => new[] { md.prop1, md.prop2 }).ToArray());
方式二:合并两个Select结果后转数组
先分别获取prop1和prop2的序列,用Concat合并,再转成数组:
Method(myDatas.Select(md => md.prop1).Concat(myDatas.Select(md => md.prop2)).ToArray());
两种方式都能直接生成包含所有prop1和prop2元素的string数组,作为Method的参数传入。
内容的提问来源于stack exchange,提问作者EsprnzJK
相关产品推荐
相关产品推荐

