【问题标题】:Invalid Cast Exception for Linq JOIN on Strongly typed Dataset Tables强类型数据集表上 Linq JOIN 的无效转换异常
【发布时间】:2021-09-03 00:41:44
【问题描述】:

浏览了一些类似的问题,但无法将它们应用于此。我正在对强类型数据集执行 Linq 查询:

query = From g In dbDS.gi_game
        Join o In dbDS.gi_organisation
        On g.DeveloperID Equals o.ID
        Select o

g.DeveloperIDo.ID 都是字符串。 g.DeveloperID 持有gi_organisation.ID

数据集是通过 table adpaters 从 mysql 数据库填充的。

这会返回一个异常:

System.InvalidCastException: 'Unable to cast object of type '<JoinIterator>d__38`4[OmniGameZzap.gameinfozDataSet+gi_gameRow,OmniGameZzap.gameinfozDataSet+gi_organisationRow,System.String,OmniGameZzap.gameinfozDataSet+gi_organisationRow]' to type 'System.Data.EnumerableRowCollection`1[OmniGameZzap.gameinfozDataSet+gi_gameRow]'.'

发生了什么?

【问题讨论】:

  • 你需要使用 FirstOrDefault 或类似的
  • @mb14 感谢您的回复。在哪里?你能提供一个代码示例吗?
  • 是的,当然。我假设您的“查询”需要一个结果,但是当您执行 SELECT 时,它总是返回一个 IEnumerable,因此您的错误。所以,(从 g 中 dbDS.gi_game 加入 o 在 dbDS.gi_organisation 上 g.DeveloperID 等于 o.ID 选择 o).FirstOrDefault();
  • 啊不。它在 SQL Join 语句中使用,该语句检索游戏和组织中通过外键/主键匹配的所有行(在本例中为 g.DeveloperIDo.ID)。所以没有一行。我确实尝试了你的代码,看看它做了什么。由于将集合转换为单个集合,因此无法编译。

标签: c# linq exception dataset


【解决方案1】:

很难告诉你如何解决这个问题,因为我对富有表现力的 LINQ 不够坚定。

但从您提供的异常消息来看,我猜问题出在Select o 行。

【讨论】:

  • 同意 - 它似乎以 Select 语句为中心,但我终其一生都无法弄清楚我的意思是什么!
【解决方案2】:

该死。省略周围代码的危险。事实证明,之前的代码正在投入使用。完整原代码:

Dim query = From g In dbDS.gi_game Where g.SystemID = SystemID Select g
query.CopyToDataTable(ds.gi_game, LoadOption.OverwriteChanges)

query = From g In dbDS.gi_game
        Join o In dbDS.gi_organisation On g.DeveloperID Equals o.ID
        Select o

工作代码:

Dim query = From g In dbDS.gi_game Where g.SystemID = SystemID Select g
query.CopyToDataTable(ds.gi_game, LoadOption.OverwriteChanges)

Dim orgs = From g In dbDS.gi_game
            Join o In dbDS.gi_organisation On g.DeveloperID Equals o.ID
            Select o

看起来查询已输入到数据表或其他内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 2010-11-04
    • 2012-02-20
    • 1970-01-01
    • 2012-09-20
    • 2013-09-21
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多