将对象列表的列表转换为字符串

时间:2017-06-06 23:07:53

标签: c# list nested-lists

我列出了master等对象列表。

如何覆盖List<List<Event>>,以便每个内部列表都会显示在一行命令提示符中?

ToString()

3 个答案:

答案 0 :(得分:3)

public override string ToString(List<List<Event>> events)
{
     return string.Join(", ", 
         events.SelectMany((list) => list)
             .Select((ev) => ev.ToString()));
}
  1. 获取列表列表并将其展平为.SelectMany()
  2. 将每个Event转换为重新使用.ToString()
  3. 的字符串
  4. 将字符串数组连接成一个逗号分隔的字符串(可以更改)。
  5. 修改1 鉴于基本方法签名为string ToString()而没有任何参数,您可能需要引用类中的字段或属性,而不是定义单独的string ToString(List<List<Event>> events)

    public class SO 
    {
    
        List<List<Event>> events;
    
        public override string ToString()
        {
             return string.Join(", ", 
                 events.SelectMany((list) => list)
                     .Select((ev) => ev.ToString()));
        }
    }
    

答案 1 :(得分:1)

public override string ToString(List<List<Event>> lle)
{
    StringBuilder res=new Stringbuilder(your_guess_of_lenght_here);
    foreach(List<Event> le in lle){
        foreach(Event e in le){
            res.Append(e+"any_separator_of_elements");
        }
        res.Append("\n");
    }
    return res.ToString();
}

这样的东西?我不知道您的事件字符串表示,您可能想要更改它。

答案 2 :(得分:0)

    public override string ToString(List<List<Event>> listOflistOfEvents)
    {
        StringBuilder result = new StringBuilder();
        listOflistOfEvents.ForEach(delegate(List<Event> listOfEvents)
        {
            result.AppendLine();
            listOfEvents.ForEach(events => result.Append(events + ","));
        });
        return result.ToString();
    }