将对象转换为CSV字符串

relj7zay  于 2023-03-21  发布在  其他
关注(0)|答案(3)|浏览(158)

我在将产品对象转换为csv字符串时遇到问题。

var data = ProductPresenter.ExportAllProducts();
string csv = String.Join(",", data.Select(x => x.ToString()).ToArray());

这将产生以下输出:

BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts,BLL.Views.ExportAllProducts

预期输出如下:

Small Hat, 12.10, true
Medium Hat, 13.50, true
Large Hat, 15.00, false
...

从对象上的每个项中获取值时,我缺少了什么转换?

tpxzln5u

tpxzln5u1#

你的数据变量不是一个字符串列表,要么给该类添加一个.ToString()方法,要么创建一个字符串列表并使用它。

zz2j4svz

zz2j4svz2#

您需要覆盖ToString()方法以获得所需的效果。否则,当您执行x.ToString()时,将使用来自基类“Object”的ToString()实现。
Object.ToString()返回对象作为其示例的类的全名。

mxg2im7a

mxg2im7a3#

我认为你试图得到一个csv格式的字符串列表/数组。
我会覆盖ToString()

class Product
{
    public override string ToString()
    {
        return ProductName + "," + Price.ToString() + "," + boolProperty.ToString();
    }
}

以及

var q = (from d in data select d.ToString()).ToArray()

或者类似的东西

var q = (from d in data 
        select new { d.ProductName + "," + Price.ToString() +
               "," + boolProperty.ToString() } )
        .ToArray()

相关问题