2011-01-21 23 views
97

は、私は次のクラスがあるだろう:オブジェクトのプロパティの1つの配列にオブジェクトのリストを変換

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

、その後、私は今、以下のクラス(List<ConfigItemType> MyList

のリストを作成するI

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

がどのように私はの値を使用してlistGoesHereにしてMyListを収めることができ、次のシグネチャを持つメソッドを持っていますparamsの文字列配列として3210?

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

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

を探している

答えて

204

は、あなたのファイルに

using System.Linq

を追加することによって、その名前空間を追加してください - それはインテリセンスで表示されます。

+0

これも私が考えたものです。しかし、選択はインテリセンスに現れません。 – Vaccano

+0

+1私と同じ –

+0

GAAAAAAA!私はlinqインクルードが欠けていた! – Vaccano

6

また、これは動作するはずです:

AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray()) 
16

私はLINQのは、これを行うことができますことをかなり確信している....しかしマイリストは(私が使用しているであろうものである)、それにselectメソッドを持っていません。

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

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

ほとんどの問題は、あなたがSystem.Coreへの参照を持っていないのいずれか、またはあなたがSystem.Linqためusingディレクティブが不足しているということです。 .NET 2.0で立ち往生しているすべての人のために

5

、私のように、(OPの例に適用)以下の方法を試してみてください。

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

ConfigItemListはあなたのリストの変数です。

+0

.NET 2.0群衆のために投稿してくれてありがとう! – webworm

関連する問題