2016-11-04 44 views
-1

我有一个枚举ABC(N = 0,Y = 1,M = 2),我想将它转化成CSV所以我用的string.join如下的string.join不工作Enum.GetValues C#

var abc_arr = Enum.GetValues(typeof(abc)); 
var abc_csv = string.Join("','", abc_arr); 

但它不返回N,Y,M而是返回“System.abc []” 为什么?

那么问题是Enum.GetValues是强类型的,所以你必须明确地设置结果类型

+1

类似于http://stackoverflow.com/questions/3213432/why-does-enum-getvalues-return-names-when-using-var和http://stackoverflow.com/questions/ 1398664/enum-getvalues-return-type – doctorlove

回答

1

你应该先投的GetValues结果:

var abc_arr = (abc[])Enum.GetValues(typeof(abc)); 
var abc_csv = string.Join(",", abc_arr); 

此外,我改变了你的分隔符。

你可以看看here的演示。

1

如果你想要的名字,你应该使用:Enum.GetNames(typeof(abc))GetValues返回枚举的值。如果你想,你可以通过铸造做到这一点:(int[])Enum.GetValues(typeof(abc))

1
var abc_arr = Enum.GetNames(typeof(abc)); 
var csv = string.Join(",", abc_arr); 

你应该叫GetNames返回字符串[]的名字,你也应该分离器没有','。它应该只有,

+0

我必须在sql查询中使用它,所以我使用','不是, – irfandar

+0

@irfandar好吧如果你需要的话可以添加它。 – mybirthname