VB2008Express Editionで開発しております。
Option Strict On
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim str1() As String
Dim k As Integer
ReDim str1(20)
'cドライブ直下の日本史問題.cmtファイルをShift_Jisのエンコードで読む。
Dim reader As New IO.StreamReader("C:\日本史問題.cmt", System.Text.Encoding.GetEncoding("Shift-JIS"))
Do Until reader.EndOfStream
str1(k) = reader.ReadLine
k = k + 1
Loop
reader.Close()
Dim results = From questions In str1 Where questions.Length < 50
ListBox1.Items.AddRange(results.ToArray)
End Sub
End Class
このような場合、データソースが配列ですので、何の問題もなくIEnumerable(T)型でlistboxにresultsの値を表示できたのですが、データベースの特定のフィールドを抽出したい場合、
Dim results = From questions In str1 Where questions.(列名) = (値)としてもハンドルできないエラーになってしまいます。
MSDNサイトで調べたところ、あらかじめコード上でのデータベース入力が必要なサンプルは載っていましたが、MDBファイルを取り込んでの資料等は他サイトでも載っていないようでした。
どなたかご教授願えませんでしょうか。
データベース検索時の SQL 文の Where 句で指定すれば良い話では?
> ハンドルできないエラーになってしまいます。
そのエラーというか例外の内容 (型,Messageの値,InnerException,etc.) が重要なのであって,
「ハンドルできないエラーになる」というだけでは,「事象が起こっていることの表記」以上の意味を持ちません。
# ハンドルされない例外とか,そういう表現じゃなかったかな,と思うのですが。
> MDBファイルを取り込んで
SQL ServerおよびSQL Server Compact 3.5を除くADO.NETデータプロバイダは,現時点ではLINQ to SQLには対応していません。
ref) http://msdn.microsoft.com/ja-jp/bb386929.aspx
ADO.NET Entity Framework経由で使うことも現時点ではできないようなので,LINQ to DataSetを使うことになります。
でも,そこまでやるとLINQ使う必要性が……。
レスおそくなりまして、すみません。
>特攻隊長まるるうさん
確かにそうですね、少しLINQにこだわりすぎていたようです。
ありがとうございます。
>Yuoさん
>SQL ServerおよびSQL Server Compact 3.5を除くADO.NETデータプロバイダは,現時点ではLINQ to SQLには対応していません。
SQL ServerおよびSQL Server Compactで再試行したところ、うまくいきました。ありがとうございます。
ツイート | ![]() |