LINQ, проверяющий на дублирующиеся объекты (исключая идентификатор)

Я использую LINQ для SQL (SQL Server) с C#.

У меня есть таблица под названием "Автомобили", которая автоматически становится классом/объектом LINQ под названием "Автомобиль". Все хорошо и хороший.

Каждый автомобиль имеет много полей, скажите CarID (интервал первичного ключа), EngineID, ColourID.

У меня есть 10 существующих строк в таблице Cars.

Используя весь прохладный материал LINQ, я создаю новый "Автомобильный" объект в C# с перегруженным конструктором, что я создал в своем "Автомобиле" частичный класс. Так, например:

Car MyCar = new Car(17, 5);

Теперь это приятно дает мне ссылку на новый Автомобильный объект, который я, конечно, еще не согласился на базу данных.

Что является большей частью способа LINQ-savvy/latest осуществить быструю проверку, чтобы гарантировать, чтобы никакие другие автомобили с теми же значениями EngineID и ColourID не существовали (я не забочусь, есть ли у них другой CarID - я просто хочу сравнить другие столбцы значений и гарантировать, чтобы я не создавал и больше вставлял автомобили с тем же Механизмом/Цветовой комбинацией).

Есть ли прохладный способ достигнуть этого действительно быстро с чем-то как:

return db.Cars.Equals(x => MyCar);
1
задан Aaron 22 July 2010 в 11:29
поделиться

1 ответ

Вы можете использовать .Distinct с IEqualityComparer

var distinctcars = from Repo.cars.Distinct(new MyComparer());

Хороший пример IEqualityComparer здесь - http://msdn.microsoft.com/en-us/library/bb338049.aspx

Если вы посмотрите пример ProductComparer, все, что вам, вероятно, нужно сделать, это заменить часть "Check whether the products' properties are equal" на ту проверку, которую вы хотите сделать, и это практически все.

2
ответ дан 2 September 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: