gpt4 book ai didi

c# - 为什么 LINQ 查询返回的结果/行数多于我正在查询的表?

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:54 24 4
gpt4 key购买 nike

为了上下文,我正在对导入数据库的多个 Excel 工作表进行 1 次数据转换。数据未标准化,我正在尝试对其进行标准化。

我在 SQL 数据库中有 3 个表。它们称为 OldAssets、OldTransactions 和 OldUsers。

OldTransactions 有 7903 条记录。 OldUsers 有 7437。OldAssets 有 9764

我正在使用 LINQ to SQL 使用此代码查询这些表

from oa in OldAssets
from ot in OldTransactions
from u in OldUsers
where (oa.Asset_Serial_Number == ot.Asset_Serial_Number && ot.User_EID == u.User_EID && ot.Asset_Tag == oa.Asset_Tag)
select new Transactions {
DevCenter = ot.Transaction_Dev_Center,
Action = ot.Transaction_Action,
Status = ot.Transaction_Status,
ModificationDate = ot.Modified,
ModifiedBy = ot.ModifiedBy,
CreatedBy = ot.CreatedBy,
TransactionDate = (System.DateTime)ot.Transaction_Date,
Transaction_Asset = (System.Int32)oa.ID,
Transaction_User = (System.Int32)u.ID }

我正在尝试检查我所有的旧交易,并为每个旧交易创建一个新交易,根据 Assets 序列号和用户 EID 的映射指定交易 Assets 和交易用户。

我的结果是给我超过 10,000 条新“交易”记录。我不明白我如何获得比我拥有的 OldTransactions 数量更多的记录。

我可以编写什么查询来为每个 OldTransaction 返回一个新的 Transaction,但添加了基于 serial_number 和 User_EID 映射的 Transaction_Asset 和 Transaction_User 属性?

最佳答案

为什么不呢?您从三个表的笛卡尔积中进行选择,这意味着总行数为 7903 x 7437 x 9764,即数十亿:OldAssets 中的一行、OldTransactions 中的一行和 OldUsers 中的一行的所有可能组合.

然后这几十亿通过where条件过滤,就剩下你说的一万多了。

关于c# - 为什么 LINQ 查询返回的结果/行数多于我正在查询的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com