ZVenue
ZVenue

Reputation: 5027

Returning list of list values (consolidated)

I want to be able to return a list of all "list values" coming from the query.. 'query' below returns multiple rows of results back from db, each as an item in a list. A sample result back from db would look like...

sample query results when I put break point: (this is what first line of code below 'query' returns from db)

  1. Name = John ; Address = 1230, Ewded ; listOfCities = "NY, CH, LA"
  2. Name = Eric; Address = 12 , Ewded ; listOfCities = "BO, SE, OR"

Code:

        List<Index.Result> query = getresultsbackfromdb();
       // query content at this point looks like above 1,2 

        List<string> result = new List<string>();            

        foreach (var item in query)
        {      

            results.Add(item.listCities);

            //'results' list takes in string and not a list
            //How do I return a consolidated list of items

        }

        return result; // this should have ""NY, CH, LA, BO, SE, OR"
        //I am trying to get a list of all cities from 1,2 included in
        //one single list.

Upvotes: 3

Views: 542

Answers (5)

oleksii
oleksii

Reputation: 35925

There is method in a List that allows you to add multiple items

foreach (var item in query)
{      
    results.AddRange(item.listCities);  
}

Docs for List.AddRange Method.

Also, just in case if you need to filter out some repeated items, you can use a Distinct LINQ method.

Upvotes: 2

Buh Buh
Buh Buh

Reputation: 7546

If you like Linq then you could do this one line:

using System.Linq;

List<string> result = query.SelectMany(s => s.listCities).ToList();

(This does essentially the same thing as oleksii's AddRange.)

Upvotes: 1

Spontifixus
Spontifixus

Reputation: 6660

Try this:

var result = query.SelectMany(x => x.listOfCities.Split(','));

Or use

var result = query.SelectMany(x => x.listOfCities.Split(',')).Distinct();

to get the list without duplicates.

Upvotes: 1

Dave Zych
Dave Zych

Reputation: 21897

You want the AddRange and string.Split methods

results.AddRange(string.Split(',', item.ListCities));

string.Split will split the string into an array wherever it finds the given character, and add range will add all items in an array to the list.

Upvotes: 1

Aghilas Yakoub
Aghilas Yakoub

Reputation: 29000

You can try this code based on Split Method

var result = yourString.Split(',');


var input = "NY, CH, LA";
var result = input.Split(',');

And you can save this value in List<object>

var list = new List<object>();
list.Add(result );

Upvotes: 1

Related Questions