5

私はこのLINQ式を持っています:

string[] x = originalString.Split(',').ToList().ForEach(y => y.Substring(0,1).ToUpper());

次のエラー メッセージが表示されます。

Cannot convert source type 'void' to target type 'string[]'

エラーが発生したと思います。ForEach は void を返します。それを修正する方法がわかりませんが、これを LINQ 式のままにしておきます。

配列内の要素を分割originalStringしてループし、.ToUpper()各要素に適用し、すべてを LINQ 式で実行するにはどうすればよいですか?

4

2 に答える 2

14
string[] x = originalString.Split(',')
                           .Select(y => y.Substring(0,1).ToUpper())
                           .ToArray();

やるべきこと - 各単語の最初の文字を大文字で取得します。

しかし、あなたが本当に探しているのは次のとおりだと思います。

string[] x = originalString.Split(',')
                           .Select(y => y.Substring(0, 1).ToUpper() + y.Substring(1))
                           .ToArray();

入力から分割された要素を大文字にする必要があります(はるかに便利に聞こえます)。

2 番目のクエリの使用例:

 string originalString = "TestWord,another,Test,word,World,Any";

出力:

TestWord
Another
Test
Word
World
Any
于 2013-03-11T17:28:52.270 に答える
1

プロジェクションを使用する:

string[] x = originalString.Split(',')
    .Select(y => y.Substring(0,1).ToUpper()).ToArray();
于 2013-03-11T17:29:33.487 に答える