オブジェクトのリストをオブジェクトのプロパティの1つの配列に変換します


133

次のクラスがあるとします。

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

次に、以下のクラスのリストを作成します(List<ConfigItemType> MyList

これで、次のシグネチャを持つメソッドができました。

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

の値をparams文字列配列として使用するMyListにはどうすればよいですか?listGoesHereConfigItemType.Name

Linqがこれを実行できると確信しMyListていますが、selectメソッドはありません(これは私が使用したものです)。

回答:


278

あなたは探している

MyList.Select(x=>x.Name).ToArray();

以来Select拡張メソッドでは、Aを追加することによって、その名前空間を追加してください

using System.Linq

ファイルに-その後、Intellisenseで表示されます。


私もそう思いました。ただし、選択はインテリセンスには表示されません。
ヴァッカーノ

GAAAAAAA!linqインクルードがありませんでした!
ヴァッカーノ2011年

1
System.Data.Linqを使用する必要があります。次に、BrokenGlassの回答に従います
Rami Shareef

1
私のバカ!まぁ。私がそれを理解するのを助けるための無料の担当者。
ヴァッカーノ2011年

素晴らしいソリューション。Object-List内の文字列「id」にアクセスしたいと思っていました。完璧に機能 List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
Marty_in_a_Box 2016年

19

Linqがこれを実行できると確信していますが、MyListにはselectメソッドがありません(これは私が使用したものです)。

はい、LINQはこれを行うことができます。それは単純です:

MyList.Select(x => x.Name).ToArray();

おそらく問題は、への参照がないかSystem.Core、のusingディレクティブがないことですSystem.Linq



6

私のように.NET 2.0で立ち往生しているすべての人に対して、次の方法を試してください(OPの例に適用可能)。

ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) 
{ 
   return ci.Name; 
}).ToArray();

ここで、ConfigItemListはリスト変数です。


.NET 2.0群衆に投稿していただきありがとうございます。
ウェブワーム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.