更新所有唯一记录(比较2个不同表中的字段)

时间:2016-01-22 11:13:00

标签: c# sql linq

我希望你能帮助我。

我想通过验证一个表的项目编号在另一个表中不存在来更新所有唯一记录。

目前我有以下程序,但由于返回的结果超过2100,我收到错误:

传入的表格数据流(TDS)远程过程调用(RPC)协议流不正确。此RPC请求中提供的参数太多。最高为2100。

我已经对这个问题进行了大量的阅读和研究,但我很难找到并实施一个适用于我的目的的简单解决方案。请注意:我是新手。

我有什么想法可以改写这个吗?

public static void NewRecords()
{
    using (var stageContext = new StagingTableDataContext())
    {
        using (var destinationContext = new               DestinationTableDataContext())
        {
            var allProjectNames = destinationContext.THEOPTIONs.Select(u => u.NAME).ToList(); 
            var deltaList = stageContext.ProjectMasters.Where(u => !allProjectNames.Contains(u.Finance_Project_Number)).ToList();

            deltaList.ForEach(u => u.Processing_Result = 0);
            deltaList.ForEach(u => u.Processing_Result_Text = "UNIQUE");

        }
        stageContext.SubmitChanges();
    }
}

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您收到错误消息,因为allProjectNames包含太多要为第二个select语句参数化的记录。您可以首先获取整个ProjectMasters表(请参阅下面我额外添加的ToList),然后查询它。或者实现一个带有表参数的存储过程。

 var  dateFrom = new Date(DATE.GetText());
 var dateTo = new Date(DATE2.GetText());
if(dateTo.getTime() >dateFrom.getTime()){
 //DATE2 is greater
}else{
 //DATE is greater
}