Tag: merge

通过C#SqlCommand执行合并语句不起作用

我正在尝试使用临时表和MERGE语句通过C#中的SqlCommand对象更新SQL表。 我正在处理的程序旨在首先将一组非常大的记录(超过20k +)导出到Excel电子表格中。 然后,用户能够搜索并替换特定值,并在他们喜欢的记录中更新尽可能多的字段。 我正在尝试的是获取该电子表格,使用它填充DataTable ,然后使用SqlBulkCopy使用DataTable填充临时SQL表。 然后,如果行仍存在于数据库中,则使用MERGE语句更新行。 但是,我遇到的问题是我在ZipCodeTerritory表上的唯一约束一直被触发给我以下错误消息: 无法在对象’dbo.ZipCodeTerritory’中插入具有唯一索引’UQ_ChannelStateEndDateZipCodeISNULL’的重复键行。 重复键值为(9,CA,94351,9999-12-31)。 这使我相信某种方式UPDATE语句没有被执行或者我在某种程度上使用ON关键字错误地加入了表中的表。 唯一约束仅在INSERT语句期间触发,或者在ChannelCode , StateCode , ZipCode或EndDate字段的UPDATE期间触发。 我正在对IndDistrnId字段进行批量更新,并彻底检查了电子表格。 再次,这是我尝试这种技术的第一次尝试,所以任何帮助/建议将不胜感激。 谢谢 C# private static string updateCommand = “UPDATE SET Target.ChannelCode = Source.ChannelCode, Target.DrmTerrDesc = Source.DrmTerrDesc, Target.IndDistrnId = Source.IndDistrnId,” + “Target.StateCode = Source.StateCode, Target.ZipCode = Source.ZipCode, Target.EndDate = Source.EndDate, Target.EffectiveDate = Source.EffectiveDate,” + “Target.LastUpdateId = Source.LastUpdateId, Target.LastUpdateDate = […]

合并从不同表中投射到一个实体的两个iqueryable

我试过这个答案 , 这一个和这个合并两个iqueryables。 但我总是收到以下错误: “Estudio”类型出现在单个LINQ to Entities查询中的两个结构不兼容的初始化中。 可以在同一查询中的两个位置初始化类型,但前提是在两个位置都设置了相同的属性,并且这些属性以相同的顺序设置。 我正在从两个不同但相似的entity framework实体(EXAMEN和EXPLORACION)映射到我的域实体Estudio,具有以下代码。 IQueryable listExamen = context.Set().Project().To(); IQueryable listExploracion = context.Set().Project().To(); var listCombined = listExamen.Concat(listExploracion); 无论如何使用两个列表的合并生成IQueryable(不可枚举)? 如果使用AsEnumerable() ,则在内存上执行以下filter(Order,Take等)。 所以我需要合并列表,但仍然能够将filter应用于合并列表而不执行查询。 //This will force the next condition is executed on memory var listCombined = listExamen.AsEnumerable().Concat(listExploracion); 那可能吗?

获取2个DataSet的差异c#

我正在编写一个简短的算法,它必须比较两个DataSet,以便可以进一步处理两者之间的差异。 我尝试通过合并这两个DataSet来完成这个目标,并将结果更改到新的DataSet中。 我的方法如下所示: private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion) { DataSet diff = null; oldVersion.Merge(newVersion); bool foundChanges = oldVersion.HasChanges(); if (foundChanges) { diff = oldVersion.GetChanges(); } return diff; } foundChanges的结果始终为false,即使两个DataSet中的值不同。 两个DataSet都具有相同的结构。 它们由三个DataTable组成,这三个DataTable是数据库中三个查询的结果。 合并工作没有问题。 我的问题是:有没有合理的解释为什么foundChanges变量总是假的,如果不是,Linq会为这个问题提供一个合适的解决方案,或者我必须通过迭代DataSet来确定更改 以下是一些进一步的信息:编程语言是C#我正在使用.Net framework 4.0我在Windows 8机器上开发所提到的数据来自数据库(MSSQL Server 2012 express)我的DataSet或DataTables没有任何PK的我所知道的。 提前致谢

如何在LinQ中合并多个集合

我在Linq有3套,像这样: struct Index { string code; int indexValue; } List reviews List products List pages 这些列表有不同的代码。 我想合并这些集如下: 在评论中取第一个 拿第一个产品 以第一页为准 在评论-…中取第二个,依此类推,请注意这些列表的大小不同。 我怎么能在Linq做到这一点? 编辑:等等,如果没有.NET 4.0,是否有更改? 非常感谢你

使用linq合并具有相同结构的多个XML文件,并根据键删除重复项

我有多个XML文件,我正在尝试合并到一个文件中。 Linq to XML可能是最好的选择,但我对创意持开放态度(XSLT似乎很擅长合并两个文件,但在n> 2或n = big时很笨拙)。 从这里阅读其他问题,某种联系看起来很好。 File1.xml: File2.xml: Merged.xml: 即它根据第三个/ @id属性合并值。 我如何用linq优雅地做到这一点?

根据键c#合并两个列表

我有课程奖励,我保持每场比赛的用户资金。 我有两个列表,我需要联系。 我在下面写下样本列表和所需的结果。 public class Reward { public int Game { get; set; } public int User { get; set; } public int Money { get; set; } public Reward Merge(Reward p) { return new Reward { Game = this.Game, User = this.User, Money = this.Money + p.Money}; } } IList list1 = new List(); […]

C#中的编程XML差异/合并

此时,我正在管理一个包含多个XML配置文件的软件。 当发布新版本的软件时,有时基本配置文件会发生变化,我们目前在启动时会调用KDiff软件。 如果检测到更改,则会提示用户选择更改。 这种方法的问题是KDiff是一个比较程序的行,而不是知道XML的方式(如节点等) 理想情况下,我希望以编程方式使用C#中的库(因为我们是一个MS商店),它可以扩展两个XML文件:源XML和当前工作XML。 然后使用一些简单的规则将两者合并在一起: 如果当前工作XML具有源XML不具有的节点,请将其删除。 如果源XML具有当前工作XML不具有的节点,请添加它。 如果两者具有相同的节点且值不同,则支持Source XML的值,除非Source XML的值设置为“UseExistingValue”。 例如,这是“源”XML: 这是“当前工作”XML: 合并后的版本看起来像: 我查看了MS XML Diff和Patch Tool ,它肯定将文件合并在一起,但不允许我想要定义的编程规则。 XMLUnit for Java开发人员看起来很有希望,但它的.NET版本似乎不发达,这是不幸的。 任何人对可编写脚本的XML Diff / Merge工具和/或.NET库(付费或免费)有任何建议吗? 谢谢。

合并两个xml文件LINQ

我有两个XML文件合并的问题。 我将两个文件加载到两个对象中,找到两个对象中的目标节点并尝试合并。 这是一个示例: var nodes1 = XResult1.Descendants(“subject”); var nodes2 = XResult2.Descendants(“subject”); //nodes1.Add(nodes2.Nodes()); // *合并代码**有人可以帮助我。 提前谢谢…… BB 这是我的XResult1: 你好 你好,我们又见面了 嗨再一次 这是我的XResult2: 你好 再次问好 我的最终结果应该是: 你好 你好,我们又见面了 嗨再一次 你好 再次问好

将列表合并为一个

我看到下面的post对我来说真的很难理解。 所以我重新发布它。 对不起,如果有人认为它是重复的。 我只有简单的要求 C#加入/ Linq和Lambda的位置 我有这样的课 public class Person { public int Id{get;set;} public string Name{get;set;} public string MailingAddress{get;set;} } 我有一个像下面这样的方法 public IList GetNames(IList ids) 这将给我下面的人员名单 1“Sam”“” 2“开发”“” 4“哈希” 我有另一种方法,如下所示 public IList GetMailingAddress(IList ids) 这将给我下面的人员名单 1“”“ABC” 6“”“TTT” 2“”“XYZ” 现在我需要合并两个方法的结果,这样我才能得到这样的最终结果 1“Sam”“ABC” 2“Dev”“XYZ” 更新:对不起,我没有明确提供我的测试数据。 请参阅上面的测试数据

winform – 合并datagridview头文件

我在winForm中合并datagridview标头时遇到问题。 我用这个代码: void dataGridView1_Paint(object sender, PaintEventArgs e) { Rectangle r1 = dataGridView1.GetCellDisplayRectangle(2, -1, true); Rectangle r2 = dataGridView1.GetCellDisplayRectangle(3, -1, true); r1.X += 1; r1.Y += 2; r1.Width += r2.Width – 2; r1.Height -= 6; using (SolidBrush br = new SolidBrush(dataGridView1.ColumnHeadersDefaultCellStyle.BackColor)) { e.Graphics.FillRectangle(br, r1); } //draw text using (SolidBrush br = new SolidBrush(this.dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor)) { StringFormat sf […]