C# 如何将IEnumerable转换为组合值的字符串数组

C# 如何将IEnumerable转换为组合值的字符串数组,c#,C#,假设我有我的目标: public class MyObject{ public p1; public p2; } 以及可枚举版本: IEnumerable<MyObject> MyObjects; i可数MyObjects; 如何将其转换为字符串[],即p1+'='+p2值的数组?您可以对其执行一些简单的linq操作 (from m in MyObjects select m.p1 + "=" + p2).ToArray() 如果您真的不需要它作为数组,您可以省略对ToArr

假设我有我的目标:

public class MyObject{ public p1; public p2; }
以及可枚举版本:

IEnumerable<MyObject> MyObjects;
i可数MyObjects;

如何将其转换为
字符串[]
,即
p1+'='+p2
值的数组?

您可以对其执行一些简单的linq操作

(from m in MyObjects
select m.p1 + "=" + p2).ToArray()
如果您真的不需要它作为数组,您可以省略对
ToArray()
的调用,然后使用
IEnumerable

如果希望将它们全部放在逗号分隔的列表中,则不需要转换为数组,因为
string.Join
方法有一个重载,需要一个枚举。所以你可以这样做:

string.Join(",",from m in MyObjects
                select m.p1 + "=" + p2);
我个人更喜欢上面的语法,但如果您都支持使用较少的字母,那么代码在语义上与下面的较短代码片段相同

string.Join(",",MyObjects.Select(m => m.p1 + "=" + p2));

MyObjects.Select(o=>o.p1+“=”+o1.p2).ToArray()

谢谢。现在要将其转换为CSV字符串,我只需
string.Join()
that。。或者这一切都可以在第一次linq操作中完成吗?为什么要使用
string.Join
,挖掘它的
string.Join
。是因为我的版本吗?(2013)?在C#中没有区别——一个变成蓝色,另一个变成绿色。如果我使用
string.Join
我使用的是C#version 4,我不确定这是否重要,无论如何,再次感谢