この場合、テキストのソースはwinformsテキストボックスからのものです。私はこれを主にLINQについてもっと学び、おそらくその強さを実証するために求めています(私の意見では、ループよりも読みやすいです)。このプログラムにはいくつかの要件がありました。関数は、テキストボックスからテキストを取得し、それを個別の行に分割し、空の行や重複する行を削除して、行をトリミングする必要がありました。
これらはこれを行う唯一の方法ですか?C#でこれを行う他の方法はありますか(行のリストをループして、基準を満たすアイテムを新しいリストや配列などに追加することは別として)?
1:
List<String> listOne = textBoxWords.Text
.Split(new char [] { '\r', '\n' })
.Select(s1 => s1.Trim())
.Where(s2 => !String.IsNullOrEmpty(s2))
.Distinct()
.ToList();
2:
List<String> listTwo = textBoxWords.Text
.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s1 => s1.Trim())
.Distinct()
.ToList();
更新:このコードが提案されましたが、文字列をトリミングする必要がない場合にのみ機能します。
3:
List<String> listThree = textBoxWords.Text
.Split(new char[] { '\r', '\n' },
.Where(s1 => !String.IsNullOrWhiteSpace(s1))
.Distinct()
.ToList();
私はそれがa)かなり具体的であり、b)DataGridを使用しておそらくより簡単に実装できることを知っていますが、私が維持しているコードはテキストボックスを使用しており、すぐに書き直したくありませんでした。