如何将Linq与Dataset.xsd文件一起使用?

时间:2008-12-22 19:17:10

标签: linq xsd linq-to-dataset linq-to-xsd

如何将Linq与Dataset.xsd文件一起使用?

我查看了Linq-to-Datasets和Linq-to-XSD,但它们似乎并不直接使用Visual Studio DataSet.xsd文件。

编辑:我实际上找到了一个很棒的链接:link text但是如果我想查询相关的表格,我似乎无法弄明白该怎么做。

    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中它为我做了所有这些,所以它有点令人失望)

2 个答案:

答案 0 :(得分:2)

DataSet只是数据的容器,因此您需要先填充它。 LINQ to SQL 将为您创建SQL并转到数据库...但是当您使用DataSet时,您正在使用 LINQ to Objects ,这赢得了'创建SQL。因此,在开始编写LINQ以查询DataSet之前,需要确保填充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

答案 1 :(得分: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

您忘记设置字段的类型。这就是你得到对象引用问题的原因。您不必创建新的空白数据集。