logTypeの別個の「logName」項目の文字列配列を取得するためにクエリを実行したいとします。以下はうまくいきます:Linq動的選択キャストの問題
Dim stringArray() As String = (From item In dc.Vw_Logs
Where item.LogType = [Passed in logType]
Select item.LogName Distinct).ToArray()
ただし、これは特定のLogTypeが設定されている場合にのみ機能します。 logType句をオプションにしたいと思います。これを試してみて、達成するために、私は、クエリを書き換えています。これにより
Dim q = From item In dc.Vw_Logs Distinct
If not logType is nothing Then
q = q.Where(Function(item) item.LogType = logType)
End If
q.Select(Function(item) item.LogName)
Dim stringArray() As String = q.ToArray()
を私は次のエラーを取得する:
Value of type '1-dimensional array of Vw_Log' cannot be converted
to '1-dimensional array of String'
このラウンドを取得するための最良の方法は何ですか?私は各項目とキャストを反復しないようにしたいと思います。
ありがとうございました
これは機能しません。なぜなら、logType(selectメソッドに渡された)が何もない場合、これは一致しません(この場合はすべて一致します) – James
ジェレミーはあなたのロジックを誤って読んだだけですが、彼は根本的に正しいです。 Where節はちょうど(logTypeは何もないか、item.LogType = logType) –
です。 – Jeremy