C# Itt a lekérdezésben mit jelent a "g. Sum", a "new"?
var stat = from i in adatok
where i.bábuk!=10
group i by i.név into g
orderby g.Sum(i => i.bábuk) descending
select new { Név = g.Key, Össz = g.Sum(i=> i.bábuk) };
foreach (var i in stat) Console.WriteLine(i.Név + ' ' + i.Össz);
Eddig ilyen (i=>i.bábuk) nem láttam.Mi az a nyíl?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
A Sum egy aggregáló függvény, összegez.
A new pedig egy új névtelen típust hoz létre.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Jaa, nem vettem észre.
Lambda kifejezés. Gugliban utána tudsz nézni.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Lambda kifejezések... hmm...
Feltételezem, tudod, mi az a függvény, és mi az az eljárás, és mi az a delegate.
Arról van szó, hogy nagyon rövid dolgok miatt nem akarjuk elrondítani a kódunkat egy új függvénnyel vagy eljárással. Ilyen esetek például ha az IEnumerable.Where metódussal egy logikai feltétel szerint szűrni akarsz. Mert ez amúgy úgy működne, hogy:
private bool FilterEvenNumbers(int x) {
return x % 2 == 0;
}
Func<int, bool> WhereCondition = FilterEvenNumbers;
var Result = Enumerable.Range(1, 100).Where(WhereCondition);
És ez nagyon nem tetszik, hogy ilyen hosszan írjuk le ezt a szűrést. Jobb lenne ezt egy sorba letudni. Itt jönnek képbe a lambda kifejezések:
var Result = Enumerable.Range(1, 100).Where(x => x % 2 == 0);
Na, ez így már sokkal jobb.
Ha megnézel egy matematikai függvényt, az valahogy így néz ki:
f(x) = x * x
Ebből úgy lesz lambda kifejezés, hogy a nevét letakarítod:
(x) = x * x
Az = jelet =>-ra cseréled:
(x) => x * x
És kész. Esetleg a paramétereknél a zárójel elhagyható.
Lambda kifejezéseknek két fajtája van, amelyiknek:
- van eredménye,
- és aminek nincs eredménye.
És innentől guglizz rá, hogy melyik hogy néz ki, mert nincs kedvem leírni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!