[]

c# iç içe liste tutan sınıf yapısı?

merhabalar. geliştirmeye çalıştığım bir projede resmini vermiş olduğum sınıf yapısını kullanmam konusunda fikir almak istiyorum. bu sınıfa ait bir nesnenin özelliklerine atanacak değerler ilgili bir veritabanından gelecek ve nesne json olarak döndürülecek. üç ayrı sınıf, 3 ayrı tabloyu temsil etmekte. veritabanı bana ait olmadığından tasarımda herhangi bir değişiklik yapamıyorum. senaryoyu şöyle düşünebilirsiniz; ben bir müşteriyim ve değişik kategorilerde alışveriş yaptığımda her işlem için puan kazanıyorum. mesela 3 adet kategori olsun. teknoloji, giyim ve yemek. Yaptığım her işleme ait detaylar (amount, volume, price) 3.tabloda tutuluyor. 3 kez teknoloji, 4 kez giyim, 5 kez yemek kategorisinde alışveriş yaptıysam toplamda 12 satırlık bir veri 3.tabloda tutuluyor. 2.tabloda ise her kategori için toplam puan ve kullanılmış puanlar tutuluyor. 3 adet kategori olduğundan ve ben her kategoride alışveriş yaptığımdan 3 satırlık bir veri 2.tabloda tutuluyor. bir kez daha teknoloji kategorisinde alışveriş yapsam 2.tablodaki teknoloji puanım değişirken herhangi bir satır değişimi olmayacak, 3.tabloda yaptığım işlemin ayrıntılarının bulunduğu bir satır eklenecek ve toplamda 13 satır olacak. tek seferde ilgili verileri json olarak döndürmek istediğimden böyle bir sınıf yapısı izledim. bu şekilde bu sınıfı kullandığımda her kategorinin kendine has toplam puan bilgisi ve yapılan işlemlerini tek seferde döndürebiliyorum. ama bir şeyler yanlış gibi. istediğim çıktıyı alıyorum bir problem yok ama verileri çekip bu sınıf türünden bir nesneye atama işlemi yaptığımda iç içe listeler için iç içe foreach kullanıyorum. önerileriniz nelerdir? neleri değiştirmeliyim? umarım anlatabilmişimdir.

not: amatör olarak yazılımla ilgileniyorum. bir de 3.tablodan toplam puan bilgisini elde edebiliyoruz 2.tabloya ne gerek var denilebilir. 3.tabloda belirli bir tarihten önceki işlemler yok. bu yüzden 2.tabloyu da kullanmak zorundayım.


 
Bilemedim ama aklıma döngü ile veri okuma kısımları için metot yazmak geldi. Yani en azından kod daha okunabilir, tekrarsız olur. Tabi döngü kullanımı birden fazla yerde ise.


  • demirKamil  (19.02.18 23:14:05) 
Entity framework kullaniyorsaniz linketeki alternatifleri inceleyebilirsiniz.
codingcanvas.com

ikinci alternatif:
Bunun haricinde tek tek mapping ile ugrasmamak icin eger EF ve db first gidiyorsaniz Reverse poco generator ile automapper'i bir arada kullanabilirsiniz.

Son olarak ogrenciyseniz resharper'in beles versiyonunu kurun. for loop ile yaptiginiz bir cok islemi cok daha kisa bir sekilde lambda expressionlarla yapmanizi saglar.
  • mononoke  (20.02.18 14:26:54) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.