爲了上下文的緣故,我正在從一些導入到數據庫的Excel工作表中進行1次數據轉換。數據未規範化,我試圖對其進行規範化。爲什麼LINQ查詢返回比我查詢的表更多的結果/行?
我在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 }
我試圖去通過我所有的OldTransactions和每個OldTransaction查詢這些表,創建一個新的事務它根據資產序列號和user_EID的映射來指定Transaction_Asset和Transaction_User。
我的結果是給了我剛剛超過10,000條記錄的新「交易」。我不明白我如何獲得比我擁有的OldTransactions數量更多的記錄。
我可以編寫什麼樣的查詢,它將爲每個OldTransaction返回一個新的Transaction,但是基於Serial_number和User_EID的映射添加了Transaction_Asset和Transaction_User的屬性?
...因此交易可能會在結果集重複時,它已經超過1個用戶/資產組合 – MikeM 2011-03-28 01:34:43
@mdmullinax你說,它完美。 – 2011-03-28 01:37:51
@ ilya-kogan和@mdmullinax - 我希望更新了我的問題,使其更加簡潔。我想知道如何根據序列號和UserEID爲每個OldTransaction生成一個新的單個事務。 – 2011-03-28 01:50:06