【发布时间】: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.DeveloperID 和 o.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.DeveloperID和o.ID)。所以没有一行。我确实尝试了你的代码,看看它做了什么。由于将集合转换为单个集合,因此无法编译。