すべてのアイテムを繰り返し処理せずに、c#またはvb.netでList(of Object)
をList(of String)
に変換する方法はありますか? (舞台裏の反復は問題ありません。簡潔なコードが必要です)
更新:最良の方法は、おそらく新しい選択を行うことです
myList.Select(function(i) i.ToString()).ToList();
または
myList.Select(i => i.ToString()).ToList();
新しいリストの作成を繰り返すことなしには不可能です。 IListを実装するコンテナでリストをラップできます。
LINQを使用して、次のようなオブジェクトリストからIEnumerable<string>
の遅延評価バージョンを取得できます。
var stringList = myList.OfType<string>();
これはすべてのタイプで機能します。
List<object> objects = new List<object>();
List<string> strings = objects.Select(s => (string)s).ToList();
変換の実行方法をさらに制御したい場合は、ConvertAllを使用できます。
var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
こんな感じ?
List<object> objects = new List<object>();
var strings = (from o in objects
select o.ToString()).ToList();
いいえ-リストの[〜#〜] all [〜#〜]要素を変換する場合は、[〜#〜] all [〜#〜]何らかの方法でそのリストの要素。
反復をさまざまな方法(foreach()......、または.ConvertAll()など)で指定/記述できますが、最終的には、何らかの方法でコードが1つずつ繰り返されます要素と変換します。
マーク
List(of object)の構築中に文字列変換を行うことはできますか?これは、List(of object)が作成された後にリスト全体を列挙することを避ける唯一の方法です。