我希望你能幫我解決我的困境。程序比較2個表並更新DISTINCT記錄
我知道有不同的方法來實現這一點,我很樂意接受您的建議。我每天都在學習。但請記住我還是個新手。 :)
我試圖糾正執行以下程序:
- 報告認爲,不存在
- 由[THEOPTION] [NAME]字段比較所有不重複的記錄。 。在[ProjectMaster] [Finance_Project_Number]字段
- 它更新不存在
第一關不同記錄;當我在SQL中執行DISTINCT選擇時,我得到這個值:6982.
但是我的程序中應該複製這個結果的代碼行返回的結果是我的總記錄中的幾百條記錄在DB:15 995
這是該行:
var deltaList = stageContext.ProjectMasters.ToList().Where(u => !allProjectNames.Contains(u.Finance_Project_Number)).Distinct().ToList();
這裏是我的SQL查詢:
SELECT DISTINCT [Finance_Project_Number]
FROM [InterfaceInfor].[dbo].[ProjectMaster]
WHERE NOT EXISTS (SELECT *
FROM [IMS].[dbo].[THEOPTION]
WHERE [InterfaceInfor].[dbo].[ProjectMaster].[Finance_Project_Number] = [IMS].[dbo].[THEOPTION].[NAME])
下面是我完整的C#程序:
public static void NewRecords()
{
using (var stageContext = new StagingTableDataContext())
{
using (var destinationContext = new DestinationTableDataContext())
{
var allProjectNames = destinationContext.THEOPTIONs.Select(u => u.NAME).ToList(); //12 622
var deltaList = stageContext.ProjectMasters.ToList().Where(u => !allProjectNames.Contains(u.Finance_Project_Number)).Distinct().ToList(); //15 300
deltaList.ForEach(u => u.Processing_Result = 0);
deltaList.ForEach(u => u.Processing_Result_Text = "UNIQUE");
}
stageContext.SubmitChanges();
}
}
謝謝大家提前!
查找和更新不存在的記錄是一個難以理解的概念把握。這是什麼意思? –
@DanBracuk我正在嘗試查找THEOPTION表中不存在的所有記錄(通過標識符),但確實存在於ProjectMaster表中。但只有DISTINCT記錄。由於CRUD操作,每個標識符有多個記錄。希望這是有道理的! – onmyway