返回列表值列表(合并)

时间:2012-09-13 15:46:35

标签: c# asp.net .net list foreach

我希望能够返回所有"列表值的列表"来自查询..'查询'下面从db返回多行结果,每行作为列表中的项。从db返回的样本结果看起来像......

当我提出断点时,

示例查询结果:(这是下面第一行代码' query'从db返回)

  
      
  1. 姓名=约翰;地址= 1230,Ewded; listOfCities =" NY,CH,LA"
  2.   
  3. 姓名= Eric;地址= 12,Ewded; listOfCities =" BO,SE,OR"
  4.   

代码:

        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.

5 个答案:

答案 0 :(得分:2)

List中的方法允许您添加多个项目

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

List.AddRange Method的文档。

另外,如果您需要过滤掉一些重复的项目,可以使用Distinct LINQ方法。

答案 1 :(得分:1)

您可以根据Split Method

尝试此代码
var result = yourString.Split(',');


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

您可以将此值保存在List<object>

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

答案 2 :(得分:1)

您需要AddRangestring.Split方法

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

string.Split会将字符串拆分为数组,只要它找到给定的字符,添加范围就会将数组中的所有项目添加到列表中。

答案 3 :(得分:1)

试试这个:

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

或使用

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

获取没有重复的列表。

答案 4 :(得分:1)

如果你喜欢Linq那么你可以这样做:

using System.Linq;

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

(这与oleksii的AddRange基本相同。)