【问题标题】:Attempting to Use String.Join on a Collection does not list Items only Name of Collection尝试在集合上使用 String.Join 不会仅列出项目集合名称
【发布时间】:2019-10-21 15:33:25
【问题描述】:

我所看到的每个地方似乎都有相同的响应,但我找不到一个来解决我遇到的问题。我正在尝试将对象列表中的项目连接成一个字符串。但是,我得到的是页面名称和对象名称,实际列表值。

我试过了:

string combinedLog = string.Join(",", logList)

我也试过了:

string combinedLog = string.Join(",", logList.Select(c => c.ToString()).ToArray<string>());

我得到的是PageName + Log,PageName + Log

这是对象:

    private class Log
    {
        public DateTime LogTime { get; set; }
        public string Result { get; set; }
        public string ItemName { get; set; }
        public Guid? ItemId { get; set; }
        public string ErrorMessage { get; set; }
    }

列表如下:

List<Log> logList = new List<Log>();

我正在尝试获取如下字符串: “2019 年 10 月 21 日,失败,Acme,无法导入,2019 年 10 月 21 日,成功,ABC,没有错误”

【问题讨论】:

  • 您想要来自Log 类的单个属性还是所有属性的组合? ToString 默认不做后者,因此您需要定义您希望如何将 Log 实例表示为字符串。
  • @DStanley 换句话说,我想要(10/21/2019,失败,Acme,无法导入)列表中的每个对象。

标签: c# .net string list


【解决方案1】:

您可以为此覆盖Log 类中的ToString() 方法

private class Log
{
    public DateTime LogTime { get; set; }
    public string Result { get; set; }
    public string ItemName { get; set; }
    public Guid? ItemId { get; set; }
    public string ErrorMessage { get; set; }

    public override string ToString()
    {
         return $"{LogTime}, {Result}, {ItemName}, {ErrorMessage}";
    }
}

然后使用string.JoinlogList 连接成一个字符串

【讨论】:

    【解决方案2】:

    你应该做类似的事情 String.Join(";", logList.Select(x => $"{x.LogTime},{x.Result},{x.ItemName}")) ..

    或者使用泛型来获取它

    var fields = typeof(Log).GetFields();
    var result = String.Join(";", logList.Select(x => 
                     String.Join(",", fields.Select(f => f.GetValue(x)))
                 ));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多