【问题标题】:Returning list of list values (consolidated)返回列表值列表(合并)
【发布时间】:2012-09-06 18:25:33
【问题描述】:

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

我设置断点时的示例查询结果:(这是“查询”下方的第一行代码从 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.

【问题讨论】:

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


    【解决方案1】:

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

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

    List.AddRange Method 的文档。

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

    【讨论】:

      【解决方案2】:

      你可以根据Split Method试试这段代码

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

      你可以把这个值保存在List&lt;object&gt;

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

      【讨论】:

        【解决方案3】:

        您需要AddRangestring.Split 方法

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

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

        【讨论】:

          【解决方案4】:

          试试这个:

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

          或者使用

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

          获取没有重复的列表。

          【讨论】:

            【解决方案5】:

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

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-11-30
              • 1970-01-01
              • 2015-06-02
              • 2015-12-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多