3

クエリからのすべての「リスト値」のリストを返せるようにしたい..以下の「クエリ」は、データベースから複数の結果行を返し、それぞれがリストの項目として返されます。db から返されるサンプル結果は次のようになります...

ブレークポイントを配置したときのクエリ結果の例: (これは、「クエリ」の下のコードの最初の行が db から返すものです)

  1. 名前 = ジョン; 住所 = 1230、Ewded ; listOfCities = "NY、CH、LA"
  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

List複数のアイテムを追加できるメソッドがあります

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

List.AddRange メソッドのドキュメント。

また、繰り返し項目を除外する必要がある場合に備えて、DistinctLINQ メソッドを使用できます。

于 2012-09-13T16:29:59.443 に答える
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

あなたはに基づいてこのコードを試すことができます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

Linq が好きなら、次の 1 行を実行できます。

using System.Linq;

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

(これは本質的に oleksii の AddRange と同じことを行います。)

于 2012-09-13T16:16:48.627 に答える
1

AddRangestring.Splitメソッドが必要です

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

string.Split指定された文字が見つかった場所で文字列を配列に分割し、範囲を追加すると、配列内のすべての項目がリストに追加されます。

于 2012-09-13T15:53:00.853 に答える