文字列のリストをコンマ区切りの文字列に変換する方法はありますか?
String[] data = new String[] { "test", "abc", "123" }
変換:
'test', 'abc', '123'
可能な解決策:
''
で囲み、リストでString.join
を使用します。Foreach
リスト内の各文字列と''
と','
を連結し、最後に最後の','
を削除します両方を行う単純なLinq(1行式)はありますか?
両方を行う簡単なLinq(1行式)はありますか?.
string.Join(",", data.Select(item => "'" + item + "'"))
Linqの基本:変換はSelect
ステートメントです。フィルターはWhere
ステートメントです。
とは言っても、Linq以外の文字列操作ツールがたくさんあり、それらは文字列用に最適化されている可能性が高いため、Linqを探す前に常にそれらを調べます。
集約linqを使用できます
Array.Skip(1).Aggregate(Array[0],(a,b) => string.Format("{0},'{1}'",a,b));
String[] data = new String[]{"test","abc","123"};
var result = string.Join(",", data.Select(o => string.Concat("'",o,"'"));
Aggregateメソッドを使用することもできます。例:
List<string> fruit = new List<string> {"Apple", "Orange", "Pear", "Tomato", "Banana"};
var fruitSentence = fruit.Aggregate((current, next) => $"{current},{next}");
注:IEnumerableまたは同様のもので開始している場合は、LINQステートメントの最後で次のように.ToArray()を呼び出す必要があります。
input parameter: IEnumerable<string> feederIdList
var feederListString = String.Join(",", feederIdList.Select(feeder => "\"" + feeder + "\"").ToArray());
私の場合、後でOracleストアドプロシージャに渡すために、各文字列を二重引用符で囲む必要がありました。