【问题标题】:Error with LINQ to typed dataset. "Could not find an implementation of the query pattern for source type.."LINQ 到类型化数据集时出错。 “找不到源类型的查询模式的实现..”
【发布时间】:2010-12-16 19:25:05
【问题描述】:

使用 VS2008 和 .NET 3.5。我收到一条错误消息“找不到源类型'xxx.BuildingsDataTable'的查询模式的实现。找不到'Where'。考虑明确指定范围变量'building''的类型。(xxx是一个命名空间)

我的 linq 查询:

var query = from building in buildingDS.Buildings
                            where building.BuildingID == 1
                            select new { building.Name };

buildingDS 是一个类型化的数据集。 VS 可以智能感知 buildingDS 但不能智能感知建筑物(buildingID 和名称为红色)。我参考了 System.Data.Linq、System.Data.DataSetExtensions 和 System.Core。数据集的 EnforceConstraints = true。我尝试将 building 转换为 dataRow 类型,但没有成功。不知道它想让我用“建筑”做什么。

如何让查询编译?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    确保您的类型化数据集已由新的 .Net 3.5 生成器处理。
    每个表类都应该继承TypedTableBase<TRow>

    如果您的表类直接继承DataTable,则重新生成类型化数据集。

    另外,请确保您的代码文件包含using System.Data

    【讨论】:

    • 谢谢。尽管 WSDL 生成的类型化数据集不支持 TypedTableBase。数据集是常规数据集。它们在 WCF 中受支持,但在 asmx 中不受支持。所以我想我不能使用 LINQ 来输入数据集。
    • @Tony:你仍然可以写from building in buildingDS.Buildings.Rows.Cast<BuildingData.BuildingsRow>()。您可以将其包装在每个表的扩展方法中。
    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多