0

Dataset.xsd ファイルで Linq を使用するにはどうすればよいですか?

Linq-to-Datasets と Linq-to-XSD を見てきましたが、実際には Visual Studio の DataSet.xsd ファイルを直接操作しているようには見えません。

編集: 私は実際にこれのための素晴らしいリンクを見つけました:リンクテキストです が、関連するテーブルに対してクエリを実行したい場合はどうすればよいかわかりません。

    Dim taFields As New TestDSTableAdapters.FieldTableAdapter()
    Dim fields = taFields.GetData()

    Dim results = From f In fields Select f

    For Each field In results
        Response.Write(field.FieldID & " " & field.Label & " " & field.FieldTypeRow.FieldTypeLabel)
    Next

「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。field.FieldTypeRow.FieldTypeLabel は実際にはデータのクエリの一部ではないため、上記のコードを実行するとエラーが発生します。そのデータからデータを返すメソッドも作成する必要がありますか? 私はこれが事実であると仮定しています(それを参照する場合、taFields.GetDataはすべてのFieldTypeデータ結果も返さなければなりません-Linq to SQLではこれがすべて私のために行われるので、少し残念です)

4

2 に答える 2

2

DataSet はデータのコンテナーにすぎないため、最初に入力する必要があります。 LINQ to SQLは SQLを作成し、データベースに移動します...しかし、DataSet を操作しているときは、 SQL を作成しないLINQ to Objectsを使用しています。そのため、DataSet にクエリを実行する LINQ の記述を開始する前に、DataSet に必要なすべてのテーブルが入力されていることを確認する必要があります。

私はあなたがこれらの線に沿って何かを探していると思います:

Dim taFields As New TestDSTableAdapters.FieldTableAdapter()
Dim taFieldTypes As New TestDSTableAdapters.FieldTypesTableAdapter()

Dim ds As New TestDS

taFields.Fill(ds.Fields)
taFieldTypes.Fill(ds.FieldTypes)

Dim results = From f In ds.Fields Select f

For Each field In results
    Response.Write( _
        field.FieldID & " " & field.Label & " " & 
            field.FieldTypeRow.FieldTypeLabel)
Next
于 2008-12-22T19:58:30.963 に答える
0
   Dim taFields As New TestDSTableAdapters.FieldTableAdapter()
    Dim fields as TestDSTableAdapters.FieldsDataTable = taFields.GetData()

    Dim results = From f In fields Select f

    For Each field In results
        Response.Write(field.FieldID & " " & field.Label & " " & field.FieldTypeRow.FieldTypeLabel)
    Next

フィールドのタイプを設定するのを忘れました。そのため、オブジェクト参照の問題が発生していました。新しい空のデータセットを作成する必要はありません。

于 2008-12-22T20:03:42.620 に答える