Absolut bunu yazdı YeniHarman bunu yazdı Ben mi yanlış anlıyorum yoksa senin elindeki listenin hiçbir geçerliliği yok mu? Karşıda yoksa sildirdin, varsa eklettin, sendeki ile uyuşmadığında karşıdakini aldın. Ee sende niye liste duruyor ki? Hocam sanırım yalnış anladınız. Bende ki liste ile gelen listeyi katşılaştırıyorum. Karşıda yoksa ve bende varsa benden siliyor, bende varsa update edior, karşıda var bende yoksa create yapıor. yeni sende ki liste karsidakine eşit oluyor her seferinde. yani sende ki listenin nemi yok karşidan gelen hep aktif olan? Bende ki liste karşıya eşit olmuyor sürekli. Karşıdan gelen bende ki listeden az olduğuda olabilir. Bende 7 kayıt varken karşıdan 3 geliyor olabilir. @Yazilimci eyw müdür aydınlatma yaşattın bu yaşımdan sonra ellerin dert grmesin. Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.

3 tane fonksiyon yazsan. Elindeki listenin ID'sini aldıktan sonra gelen verideki listeyi tek tek dolaşsa ve aynı ID'ye sahip verileri update, delete, insert vs vs neyse yapsa? Verimli bir çzüm değil ama günü kurtarır. İleride kalan vaktinde tekrar yaparsın birşeyler :D Hocam aslında konuda belirtmedim hala hazırda hızlıca bu şekilde yapmıştım :) Daha üst seviye çzümler çıkar vs diye düşünerek konu açayım aydınlanayım dedim. Linq vs denedim ancak pek bilmediğimden oldurmadım. Ek olarak sadece ID değil + SourceKey de var. Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.

Bu işi ilgili sınıfı kurcalamadan halletmenin en mantıklı yolu uygun yardımcı bir comparer sınıf yazıp ilgili IEnumerable metotlarını kullanmak. nce yardımcı sınıfını yaz: public class AddressComparer : IEqualityComparer<Address> { public bool Equals public int GetHashCode { unchecked } } Sonra da şu şekilde ilgili listelerini oluştur: var comparer = new AddressComparer ; // her iki listede de olanlar List<Address> updateList = eskiListe. Intersect . ToList ; // yalnız yeni listede olanlar List<Address> createList = yeniListe. Except . ToList ; // yalnız eski listede olanlar List<Address> deleteList = eskiListe. Except . ToList ; anlıyorum.

3. maddeyi biraz daha açıklar mısın? Sen hiç kaval çaldın mı?

Ben mi yanlış anlıyorum yoksa senin elindeki listenin hiçbir geçerliliği yok mu? Karşıda yoksa sildirdin, varsa eklettin, sendeki ile uyuşmadığında karşıdakini aldın. Ee sende niye liste duruyor ki? Olaylara karışmayın!

Bu işi ilgili sınıfı kurcalamadan halletmenin en mantıklı yolu uygun yardımcı bir comparer sınıf yazıp ilgili IEnumerable metotlarını kullanmak. nce yardımcı sınıfını yaz: public class AddressComparer : IEqualityComparer { public bool Equals public int GetHashCode { unchecked } } Sonra da şu şekilde ilgili listelerini oluştur: var comparer = new AddressComparer ; // her iki listede de olanlar List updateList = eskiListe. Intersect . ToList ; // yalnız yeni listede olanlar ListcreateList = yeniListe. Except . ToList ; // yalnız eski listede olanlar ListdeleteList = eskiListe. Except . ToList ; Aradığım şyle bir çzümdü. Denemedim ancak uygulayıp deniycem teşekkürler Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.

Merhaba Arkadaşlar, Elimde 2 liste var. Bu listeyi karşılatırmak ve bu karşılaştırma sonucu hangi kayıtların update, create, delete olacağına karar vermek istiyorum. List<Address> şekilnde. Address nesnesi içeriği ID ve SourceKey var. Benim yapmak istediğim. Gelen liste ve bende ki listeyi ID ve SourceKey ile kontrol edip. 1- Karşıdan Gelen ve Bende olanları bulup Update etmek 2- Karşıdan Gelen ama Bende olmayanları Create etmek 3- Karşıdan Gelen, Karşı listede olmayan ama bende olan kayıtlarıda Delete etmek. 2 listenin karşılaştırmasıda ID ve SourceKey eşitliği ile yapılacak. Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.

3 tane fonksiyon yazsan. Elindeki listenin ID'sini aldıktan sonra gelen verideki listeyi tek tek dolaşsa ve aynı ID'ye sahip verileri update, delete, insert vs vs neyse yapsa? Verimli bir çzüm değil ama günü kurtarır. İleride kalan vaktinde tekrar yaparsın birşeyler :D Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:

https://www.google.com/search?client=firefox-b-d&ei=3fPqXIarMrKVmwWJ67T4Cg&q=c%23+compare+to+lists&oq=c%23+compare+to+lists&gs_l=psy-ab.3..0i19j0i22i30i19l8.1507.2156..2273...0.0..0.166.329.0j2...0...1.. gws-wiz...0i71j0i13i30i19j0i8i13i30i19. aP9sEuEFVCA Yukarıdaki link işini fazlasıyla grecektir hocam Titanyumun gücü adına!!!

15 dakikada yazdım, testleri yaptım işini grüyor hocam. List yerine Hashset kullanman performans açısından daha iyi olur etc. Kodda performans olarak hatalar var, gerekli vakit olmadığı için yaz geç yaptım umarım işini grür. public class Adress { public int Id public int SourceKey public string Value / Silinecek kayıtları burda tutalım / public bool IsDelete = false; } static void Main { List<Adress> localAdressList = new List<Adress> ; localAdressList. Add(new Adress ); localAdressList. Add(new Adress ); localAdressList. Add(new Adress ); List<Adress> serverAdressList = new List<Adress> ; serverAdressList. Add(new Adress ); serverAdressList. Add(new Adress ); serverAdressList. Add(new Adress ); for (int i = 0; i < localAdressList. Count; i++) { int rowId = localAdressList . Id; int rowSourceKey = localAdressList . SourceKey; var isCheck = serverAdressList. Find ; if { //Bende de var serverda da varmış //Birde güncel mi diye bakalım. //model içerisindeki kolonları dnelim foreach (var prop in localAdressList . GetType . GetProperties { //Bizim modelde rnek vermek için Id ve SourceKey harici 1 tane Value kolonu var. Bunu 100 tane de olabilir. Generic olarak dnmek en mantıklısı var localPropertyName = prop. Name; var localPropertyValue = prop. GetValue ; //O kayda ait, property value değerini bulalım var serverPropertyValue = serverAdressList. Find . GetType . GetProperty . GetValue(serverAdressList. Find , null); if (localPropertyValue. ToString != serverPropertyValue. ToString //Kolonlar arasındaki farklılıklar varmış } } else } //Silelim localAdressList. RemoveAll ; //Bende olmayıp, serverda olan kayıtlar varmış ona da bakalım! if (localAdressList. Count < serverAdressList. Count { for (int i = 0; i < serverAdressList. Count; i++) { //Bizde varmı bakalım if (localAdressList. Find null) } } } saybirs tarafından 27/May/19 15:51 tarihinde düzenlenmiştir

3. maddeyi biraz daha açıklar mısın? Şyle ki hocam: rneğin adam nceden 3 kayıt yollamıştı ve sisteme 3 adres kaydı almıştım. Sonrasında kendi tarafında 2 sini sildi ve bana tek bir adres yolladı. Bu durumda benim, bana yollanan listede olmayan ama bende olan kayıtları bulup kendi tarafımdan da silmem gerekiyor. Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.

YeniHarman bunu yazdı Ben mi yanlış anlıyorum yoksa senin elindeki listenin hiçbir geçerliliği yok mu? Karşıda yoksa sildirdin, varsa eklettin, sendeki ile uyuşmadığında karşıdakini aldın. Ee sende niye liste duruyor ki? Hocam sanırım yalnış anladınız. Bende ki liste ile gelen listeyi katşılaştırıyorum. Karşıda yoksa ve bende varsa benden siliyor, bende varsa update edior, karşıda var bende yoksa create yapıor. yeni sende ki liste karsidakine eşit oluyor her seferinde. yani sende ki listenin nemi yok karşidan gelen hep aktif olan? Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

Ben mi yanlış anlıyorum yoksa senin elindeki listenin hiçbir geçerliliği yok mu? Karşıda yoksa sildirdin, varsa eklettin, sendeki ile uyuşmadığında karşıdakini aldın. Ee sende niye liste duruyor ki? Hocam sanırım yalnış anladınız. Bende ki liste ile gelen listeyi katşılaştırıyorum. Karşıda yoksa ve bende varsa benden siliyor, bende varsa update edior, karşıda var bende yoksa create yapıor. Nice babayigitler kirayi kim odeyecek, coluk cocuk ne yiyecek derdinden dolayi dunyayi degistiremiyor.