Я использую 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);
Вы можете использовать .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" на ту проверку, которую вы хотите сделать, и это практически все.