En iyi yanıtlayıcılar
Entity framework if-else

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 edebilirimteşekkürler.
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.
- Yanıt Olarak Öneren Barış SarıtaşModerator 30 Mayıs 2014 Cuma 13:34
- Yanıt Olarak İşaretleyen Serkan Tepe 30 Mayıs 2014 Cuma 13:59
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.
- Yanıt Olarak Öneren Barış SarıtaşModerator 30 Mayıs 2014 Cuma 13:34
- Yanıt Olarak İşaretleyen Serkan Tepe 30 Mayıs 2014 Cuma 13:59
-
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.
-
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; } }