web-dev-qa-db-ja.com

追加の連結を使用して文字列の配列をカンマ区切りの文字列に変換する

文字列のリストをコンマ区切りの文字列に変換する方法はありますか?

String[] data = new String[] { "test", "abc", "123" }

変換:

'test', 'abc', '123'

可能な解決策:

  1. すべての文字列を''で囲み、リストでString.joinを使用します。
  2. Foreachリスト内の各文字列と''','を連結し、最後に最後の','を削除します

両方を行う単純なLinq(1行式)はありますか?

9
Reddy

両方を行う簡単なLinq(1行式)はありますか?.

string.Join(",", data.Select(item => "'" + item + "'"))

Linqの基本:変換はSelectステートメントです。フィルターはWhereステートメントです。

とは言っても、Linq以外の文字列操作ツールがたくさんあり、それらは文字列用に最適化されている可能性が高いため、Linqを探す前に常にそれらを調べます。

21

集約linqを使用できます

Array.Skip(1).Aggregate(Array[0],(a,b) => string.Format("{0},'{1}'",a,b));
3
M.kazem Akhgary
String[] data = new String[]{"test","abc","123"};
var result = string.Join(",", data.Select(o => string.Concat("'",o,"'"));
1
Backs

Aggregateメソッドを使用することもできます。例:

List<string> fruit = new List<string> {"Apple", "Orange", "Pear", "Tomato", "Banana"};
var fruitSentence = fruit.Aggregate((current, next) => $"{current},{next}");
0
Espen

注:IEnumerableまたは同様のもので開始している場合は、LINQステートメントの最後で次のように.ToArray()を呼び出す必要があります。

input parameter: IEnumerable<string> feederIdList    

var feederListString = String.Join(",", feederIdList.Select(feeder => "\"" + feeder + "\"").ToArray());

私の場合、後でOracleストアドプロシージャに渡すために、各文字列を二重引用符で囲む必要がありました。

0
Josh P