user1393214
user1393214

Reputation:

Convert a list of list of objects to string

I've a list of list of objects like List<List<Event>>.

How can I override ToString() such that each internal list will be shown in a single line of command prompt?

public override string ToString(List<List<Event>>)
{
     return ?
}

Upvotes: 1

Views: 166

Answers (3)

John Alexiou
John Alexiou

Reputation: 29254

public override string ToString(List<List<Event>> events)
{
     return string.Join(", ", 
         events.SelectMany((list) => list)
             .Select((ev) => ev.ToString()));
}
  1. Take the list of lists and flatten it with .SelectMany()
  2. Convert each Event to a string re-using .ToString()
  3. Join the array of strings into one string with comma separated (can be changed).

Edit 1 Given that the base method signature is string ToString() without any parameters you probably need to reference a field or property in your class and not define a separate 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()));
    }
}

Upvotes: 2

Santhosh
Santhosh

Reputation: 729

    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();
    }

Upvotes: 0

user8098743
user8098743

Reputation:

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();
}

Something like this? I don't know your event string representation, you may want to change that.

Upvotes: 0

Related Questions