none
Entity framework if-else RRS feed

  • Soru

  • herkese selamlar,
    db = entities.

    var result = (from c in db.1tablo
    .Where (h=> h.1tabloid == parametreden gelen id)

    join m in db.2tablo on c.1tablo id equals m.2tabloid

    select new
    {
    normlafiyat= m.normlafiyat,
    indirimlifiyat= m.indirimlifiyat,
    resim = m.redim

    }).ToList();

    normlafiyat= m.normlafiyat,
    indirimlifiyat= m.indirimlifiyat,
    bu 2 alan 2.tablomdan geliyor,
    bu alanları if sorgusuna almam gerekiyor,
    nasıl kontrol edebilirim

    teşekkürler.

    30 Mayıs 2014 Cuma 12:09

Yanıtlar

  • if sorgusu derken? Inline if icin ?: ( ternary operator ) kullanabilirsin.

    .. select new { fiyat = (decimal) m.fiyatTipi == "Normal" ? m.normalfiyat : m.indirimlifiyat, ... }

    gibi. Cok daha karmasik birseylere ihtiyacin varsa inline lambda kullanabilirsin, ya da Func<> yaratip kullanabilirsin.

    30 Mayıs 2014 Cuma 13:27

Tüm Yanıtlar

  • if sorgusu derken? Inline if icin ?: ( ternary operator ) kullanabilirsin.

    .. select new { fiyat = (decimal) m.fiyatTipi == "Normal" ? m.normalfiyat : m.indirimlifiyat, ... }

    gibi. Cok daha karmasik birseylere ihtiyacin varsa inline lambda kullanabilirsin, ya da Func<> yaratip kullanabilirsin.

    30 Mayıs 2014 Cuma 13:27
  • if sorgusu derken? Inline if icin ?: ( ternary operator ) kullanabilirsin.

    .. select new { fiyat = (decimal) m.fiyatTipi == "Normal" ? m.normalfiyat : m.indirimlifiyat, ... }

    gibi. Cok daha karmasik birseylere ihtiyacin varsa inline lambda kullanabilirsin, ya da Func<> yaratip kullanabilirsin.

    evet biraz daha karmaşık hale getireceğim.

    faydalı bilgi için teşekkürler.

    30 Mayıs 2014 Cuma 13:58
  • Karisik ise Func kullan. Ornek:

    void Main()
    {
      Random rh = new Random(Guid.NewGuid().GetHashCode());
    	Random rw = new Random(Guid.NewGuid().GetHashCode());
    	Func<int,int,double> bmi = (h,w) => w / (h/100.0 * h/100.0);
    	Func<double,WeightClass> wclass = (_bmi) => {
    	  if (_bmi < 18.5) { return WeightClass.Underweight;}
    	  if (_bmi > 30) { return WeightClass.Obese;}
    	  if (_bmi >= 25 && _bmi <= 30) { return WeightClass.Overweight;}
    	  else	{ return WeightClass.Normal; }
    	};
    	
    	var people = Enumerable.Range(1,1000000)
    	.Select (e => new Person { ID=e, Height=rh.Next(150,230), Weight=rw.Next(60,180)})
    	.ToList();
    	
    	var peopleWithBMI = from p in people
    	let BMI = bmi(p.Height,p.Weight)
    	select new {
    		p.ID, p.Height, p.Weight,
    		bmi=BMI,
    		wgroup=wclass(BMI)
    	};
    
    	var groupThem = peopleWithBMI.GroupBy (wbmi => wbmi.wgroup)
    	.Select (p => new {k=p.Key,c=p.Count ()});
    
      foreach (var g in groupThem)
      {
        Console.WriteLine ("Group: {0,-20}, Sayi: {1,20:N0}, Yuzde: {2,8:P2}", g.k, g.c, g.c/(decimal)people.Count );
      }
      
      foreach (var p in peopleWithBMI.Take(10))
      {
        Console.WriteLine ("Id:{0}, Height:{1}, Weight:{2}, BMI:{3:N2}, Group: {4}",
        p.ID, p.Height, p.Weight, p.bmi, p.wgroup);
      }
    }
    
    public enum WeightClass {Underweight,Normal,Overweight,Obese};
    public class Person
    {
     public int ID { get; set; }
     public int Height { get; set; }
     public int Weight { get; set; }
     }
    
    public class PersonWithBMI
    {
     public int ID { get; set; }
     public int Height { get; set; }
     public int Weight { get; set; }
     public double BMI { get; set; }
     public WeightClass WeightGroup { get; set; }
    }

    30 Mayıs 2014 Cuma 14:14