实体框架,检查重复忽略大小写

时间:2010-10-28 00:04:03

标签: entity-framework linq-to-entities

我想使用Linq-To-Entities检查Entity Framework中的重复项,忽略大小写。最好的方法是什么?据我所知,context。[Entity] .Contains(item,IEqualityComparer)方法不受支持。

我是否必须执行ToList(),将整个表读入内存只是为了检查它?

谢谢,

1 个答案:

答案 0 :(得分:1)

老实说,寻找重复的最佳位置是野兽的肚子 - 数据库。更容易/更快。

但是,如果必须在代码中执行此操作,您可以尝试 StringComparer.OrdinalIgnoreCase

StringComparer comparer = StringComparer.OrdinalIgnoreCase;
var caseInsensitiveResults = ctx.SomeObjectSet.Where(x => comparer.Equals(x.Field1, x.Field2));

由于 StringComparer 对象的 .Equals 方法返回true / false,您可以将其用作谓词。

您是否尝试在一个表格中查找重复项?在您的特定方案中定义“重复”,可能有助于我们为您提供帮助。

修改

由于您说您在单个表中查找重复行,因此上述操作无效。这只是一个例子。

您需要在GroupBy子句中使用该比较器代码。

但是,我仍然认为你应该在数据库中这样做。