3

我希望能够返回来自查询的所有“列表值”的列表。下面的“查询”从数据库返回多行结果,每行作为列表中的一个项目。从 db 返回的示例结果看起来像......

我放断点时的示例查询结果:(这是“查询”下方的第一行代码从数据库返回的内容)

  1. 姓名 = 约翰;地址 = 1230, Ewded ; listOfCities = "纽约、CH、洛杉矶"
  2. 姓名 = 埃里克;地址 = 12 , Ewded ; listOfCities = "BO, SE, OR"

代码:

        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.
4

5 回答 5

2

a 中有一种方法List允许您添加多个项目

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

List.AddRange 方法的文档。

此外,以防万一您需要过滤掉一些重复的项目,您可以使用DistinctLINQ 方法。

于 2012-09-13T16:29:59.443 回答
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 );
于 2012-09-13T15:50:54.570 回答
1

你想要AddRangeandstring.Split方法

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

string.Split将在找到给定字符的任何位置将字符串拆分为一个数组,添加范围会将数组中的所有项目添加到列表中。

于 2012-09-13T15:53:00.853 回答
1

试试这个:

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

或使用

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

获取没有重复的列表。

于 2012-09-13T15:54:33.897 回答
1

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

using System.Linq;

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

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

于 2012-09-13T16:16:48.627 回答