如何将具有自定义数据类型的列表获取到字符串生成器?

How can I get the List with a custom datatype to a string builder?

我有一个class。

public class IdDetails
{
    public string transactionDate { get; set; }
    public string upnName { get; set; }
    public string movementTrade { get; set; }
    public string baseCurve { get; set; }
    public string cTolerance { get; set; }
    //17 more declarations below
}

然后我将它用作我的列表的数据类型Interface

foreach(DataRow r in tbl1.Rows)
{
    InterFace.Add(new IdDetails
    {
         transactionDate = Convert.ToDateTime(r["TransDate"]).ToString(@"MM/dd/yyyy"),
         upnName = string.Empty
         movementTrade = "incoming",
         //... Somemore adding of values
    }
}

我试过这个reference。但是,我认为它是在每个项目中使用单个数据构建的字符串。我不知道这个的实际术语

我已经尝试使用我的参考资料来这样做

var x = concatenate<IdDetails>(Interface, Convert.ToString, ';');

但我没有得到我需要的结果,相反我得到了值

//output im getting
x = "DataImport2.IdDetails;" //<- this string repeated multiple times

问题:如何直接将自定义列表的内容写入字符串生成器?无需我将其转换为另一个对象。因为我可以将其转换为 DataTable 并将其处理为 StringBuilder。这是一个相当长的过程和编码。

希望有人能帮助我。

您可以使用string.Join()来实现您所需要的。例如

string.Join(",", Interface.Select(item => item.transactionDate + " " + item.xxx + // etc etc));

编辑:

覆盖 IdDetails 中的 ToString() 以使用 Reflection 获取 class.

的所有值
public class IdDetails
{
    public string transactionDate { get; set; }
    public string upnName { get; set; }
    public string movementTrade { get; set; }
    public string baseCurve { get; set; }
    public string cTolerance { get; set; }

    private static string SafeString(object s)
    {
        return s == null ? string.Empty : s.ToString();
    }

    public override string ToString()
    {
        PropertyInfo[] properties = typeof(IdDetails).GetProperties();
        return string.Join(",", properties.Select(prop => SafeString(prop.GetValue(this, null))).ToArray());
    }

    //17 more declarations below
}