Структура сущности, проверка дубликатов, игнорирование регистра - PullRequest
0 голосов
/ 28 октября 2010

Я хочу проверить наличие дубликатов в Entity Framework, используя Linq-To-Entities, игнорируя случаи. Какой лучший способ сделать это? Насколько я знаю, метод context. [Entity] .Contains (item, IEqualityComparer) не поддерживается.

Должен ли я делать ToList (), который считывает всю таблицу в память, просто чтобы проверить это?

Спасибо

1 Ответ

1 голос
/ 28 октября 2010

Если честно, лучшее место для поиска дубликатов - это живот животного - база данных.Гораздо проще / быстрее.

Однако, если вы должны сделать это в коде, вы можете попробовать StringComparer.OrdinalIgnoreCase :

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

Поскольку метод .Equals объекта StringComparer возвращает значение true / false, вы можете использовать его в качестве предиката.

Вы пытаетесьискать дубликаты в одной таблице?Определение «дубликата» в вашем конкретном сценарии может помочь нам помочь вам.

РЕДАКТИРОВАТЬ

Поскольку вы сказали, что ищете дублирующиеся строки в одной таблице, вышеприведенноене работаетЭто был просто пример.

Вместо этого вам нужно будет использовать этот код сравнения в предложении GroupBy.

Однако я все же думаю, что вы должны сделать это в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...