Kezdőoldal » Számítástechnika » Programozás » C# Itt a lekérdezésben mit...

C# Itt a lekérdezésben mit jelent a "g. Sum", a "new"?

Figyelt kérdés

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?



2015. ápr. 19. 17:35
 1/8 anonim ***** válasza:
100%

A Sum egy aggregáló függvény, összegez.

A new pedig egy új névtelen típust hoz létre.

2015. ápr. 19. 17:37
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Kössz a választ. Az alkérdést is szeretném tudni.
2015. ápr. 19. 18:19
 3/8 anonim ***** válasza:

Jaa, nem vettem észre.

Lambda kifejezés. Gugliban utána tudsz nézni.

2015. ápr. 19. 18:24
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:
Igen, de ez úgy látom nem olyan egyszerű. Akkor az a g.Sum az a i.név által elvégzett csoportosítás szerint összeadja az i.bábuk értékét és a szerint csökkenőbe rendez?
2015. ápr. 19. 18:27
 5/8 A kérdező kommentje:
Az orderbyos és a selectes sor a kapufa nekem.
2015. ápr. 19. 18:34
 6/8 A kérdező kommentje:
Ezek szerint azt az (i=>i.bábuk) át lehet írni egy hosszabb alakra is nem?
2015. ápr. 19. 19:14
 7/8 anonim ***** válasza:
100%

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.

2015. ápr. 19. 21:37
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:
Nagyon szépen köszönöm.
2015. ápr. 20. 00:49

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!