これの正しい構文は何ですか:
IList<string> names = "Tom,Scott,Bob".Split(',').ToList<string>().Reverse();
私は何を台無しにしていますか? TSourceの意味?
この質問はかなり古いことを認識していますが、文字列にスペースが含まれていることを除いて、同様の問題がありました。コンマだけでなく文字列を区切る方法を知る必要がある人のために:
string str = "Tom, Scott, Bob";
IList<string> names = str.Split(new string[] {","," "},
StringSplitOptions.RemoveEmptyEntries);
StringSplitOptionsは、スペース文字のみであるレコードを削除します...
List<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList();
これは動作します。
あなたがしようとしている場合
以下が動作するはずです:
string str = "Tom Cruise, Scott, ,Bob | at";
IEnumerable<string> names = str
.Split(new char[]{',', '|'})
.Where(x=>x!=null && x.Trim().Length > 0)
.Select(x=>x.Trim());
出力
他の人が示唆したように、明らかに順序を逆にすることができます。
これを試して:
List<string> names = new List<string>("Tom,Scott,Bob".Split(','));
names.Reverse();
ここで欠けているのは、.Reverse()がvoidメソッドであるということです。 .Reverse()の結果を変数に割り当てることはできません。ただし、Enumerable.Reverse()を使用して結果を取得する順序を変更できます
var x = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>()
違いは、Enumerable.Reverse()がvoid returnではなくIEnumerable <T>を返すことです