我有一个半百万的记录表,我需要找到重复项。所以我使用我创建的这段代码:
var dups2 = from m in mg_B
group m by new { m.Addr1, m.Addr2, m.City, m.State }
into g
where g.Count() > 1
select g;
这段代码的问题在于,它不会将 addr1 为空字符串“”和分别为 NULL 的 2 条记录作为重复记录。
基本上在比较字段的空值和空值时,它会将它们视为不同,但我需要被视为相同。
我知道我可以浏览每条记录并用“”替换空值,但我花了 1 分钟时间浏览了 4 000 条记录。当有人单击按钮时,这将重复进行。
我发现了这个空字符串问题,因为我最初创建了一个只有一些字段的类(表有超过 40 个字段)。
List<CombineClass> mg = (from m in db.MG_Backup
where m.IsArchived == false
select new CombineClass { id = m.ID, name = m.Name, addr1 = string.IsNullOrEmpty(m.Addr1) ? "" : m.Addr1, addr2 = string.IsNullOrEmpty(m.Addr2) ? "" : m.Addr2, city = m.City, state = m.State }).ToList();
有任何想法吗 ?