我想使用Linq-To-Entities检查Entity Framework中的重复项,忽略大小写。最好的方法是什么?据我所知,context。[Entity] .Contains(item,IEqualityComparer)方法不受支持。
我是否必须执行ToList(),将整个表读入内存只是为了检查它?
谢谢,
答案 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子句中使用该比较器代码。
但是,我仍然认为你应该在数据库中这样做。