LINQのクエリ構文をメソッド構文に書き換えている時にわからなくなりました。
詳しい方教えてください。
(質問1)
コメントの@-1をメソッド構文に変換すると、@-2ポクなると思いますが、
エラーがでます。
(質問2)
コメントのA-1をメソッド構文に変換すると、A-2ポクなると思いますが、
エラーがでます。
Sub Test1()
Dim animals = New String() {"イヌ", "ヒツジ", "ウマ", "シロナガスクジラ", "コウモリ"}
Dim results = From name In animals Select AnimalName = name, NameLength = name.Length '@-1
'結果セットを取得して表示
For Each animal In results
ListBox1.Items.Add(animal.AnimalName)
ListBox1.Items.Add(animal.NameLength)
Next
Dim results1 = animals.Select(Function(animal) AnimalName = Name, NameLength = Name.Length) '@-2
' この引数の数を受け付ける '[Select]' がないため、オーバーロードの解決に失敗しました。
'NameLength' は宣言されていません。アクセスできない保護レベルになっています。
End Sub
Sub Test2()
Dim fileName = New StackFrame(True).GetFileName
Dim lines = IO.File.ReadAllLines(fileName)
Dim query = From line In lines
Select trimed = line.Trim
Where trimed.StartsWith("Dim ") AndAlso trimed.Contains("=") 'A-1
ListBox1.Items.AddRange(query.ToArray)
Dim query1 = lines.
Select(Function(line) trimed = line.Trim).
Where(Function(line) trimed.StartsWith("Dim ") AndAlso trimed.Contains("=")) 'A-2
'trimed' は宣言されていません。アクセスできない保護レベルになっています。
End Sub
宜しくお願いいたします。
いつも有難う御座います。 New With {}については、前回教えて頂いたので、何度も書き込んでみたのですが、 うまく来ませんでした。 再び、魔界さんのコードを見て"."が抜けていたのに気づきました。 しかし、本質が理解てきていないので、エラー文から解決に至ることができず、 また、お手を煩わせることになりすみません。