2012-03-15 11 views
1

私は以下の目標を簡単に達成するためにFOR EACHを使用することができますが、このシナリオには多くの問題があります。リスト(T)からプロパティを取得する、FOR EACH以外のオプション

Class Foo 
    Public X as String 
    Public Y as Integer 
End Class 

Dim c As New List(Of Foo) = GetFooItemsFromDatabase...... 

すべてのXのカンマ区切り文字列を取得したいと考えています。私はsimpleArrayと呼ばれる文字列の単純な配列を持っていた場合、私はそれぞれのために使用することで、これを代わりに達成するsimpleArray(機能内蔵のLINQ、など)を構築する方法はあり

dim s as String = String.Join(", ", simpleArray) 

ような何かを行うことができますし、それを自分で作る?

編集:LINQが行く方法です。しかし、多くの提案をC#からVBに変換すると、コンパイラが気に入らない次のような結果が得られます。

Dim s As String = c.[Select](Function(myVal) myValue.X) 
+1

'foreach'はかなり簡潔な_is_、しかし、自分自身への各。 –

+2

@ Mr.Disappointmentうん、でも、それは1.0だ...:-) –

答えて

2

OK謝罪ので、これは、C#のですが、少しLINQ使用することができます

string.Join(", ", c.Select(c => c.X).ToArray()); 

Select拡張メソッドを使用すると、出力を投影できます。基本的にはcを入力し、それをXの列挙型に投影します。次に、ToArrayに電話してIEnumerable<string>string[](C#のvernacular)に変換します。

LINQが完全にVB.NETでサポートにもっと読んでも価値があるさ:

http://msdn.microsoft.com/en-us/library/bb763068.aspx

あなたがそれを初めて使用する場合は、「LINQ」の標準の命名は、新しい構文の両方をカバーする傾向があります:

from name in names 
select name 

も拡張メソッドでその装っ:

.Select().Where().OrderBy(); //.etc() 

VB.NET LINQソース:

http://www.wrox.com/WileyCDA/Section/LINQ-Extension-Methods-with-Visual-Basic-2008.id-310907.html

+0

私はLINQを新しくしていて、今のところ約1週間プレイしていますが、Extension Methodには本当に混乱していますし、VBの例やドキュメントを見つけることができません。何か提案はありますか? – WhiskerBiscuit

+0

@WhiskerBiscuitあなたが正しいです、それは検索するのが少し難しいようです。関連するものについて話すように見えるリンクが1つ見つかりました。他の多くのリンクは、LINQ固有ではなく、VB.NETの拡張メソッドの例です。 –

1

C#と.NET 4.0を使用して、

string s = string.Join(", ", c.Select(x => x.X)); 

とVB.NETの.NET 4で

Dim s As String = String.Join(", ", c.[Select](Function(x) x.X)) 

と同じコード、あなたはもうToArray()を呼び出す必要はありません。

あなたがこれを行うことができます
1

var s = String.Join(", ", c.Select(foo => foo.X)); 

または代わりにこれを使用することができます。

var s = c.Select (foo => foo.X).Aggregate((p, c) => p + ", " + c); 
1

はあなただけで行うことはできません。

String.Join(",", c.Select(item=>item.X).ToArray()) 
+0

Dim s As String = c。Select(関数(x)x.X)は何らかの理由でコンパイラに適合しています – WhiskerBiscuit

+0

right ..文字列ではないのでIEnumerableになるでしょう ...いいえ? –

関連する問題