我希望你能帮我解决我的困境。程序比较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