LINQ & Parametrem lambda výraz – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

LINQ & Parametrem lambda výraz – .NET – Fórum – Programujte.comLINQ & Parametrem lambda výraz – .NET – Fórum – Programujte.com

 

Petrroll0
Stálý člen
26. 11. 2010   #1
-
0
-

Zdar, budu mít trochu abstraktnější dotaz.
Metodám třídy LINQ se předávají jako parametry metody, jsou to vlatně lambda výrazy. To chápu, chápu i jak daná metoda může vycucnout z daného lambda výrazu všechny informace co potřebuje.
Jde mi o to jestli je metodový parametr použit ještě někde jinde. Či jestli může sám programátor napsat takovou metodu.
Další věc která mě zajímá, jak taková metoda přímo pracuje s daným parametrem. Ví že má z dané enuerovatelné kolekce vybrat např. všechny metody které se nějak jmenují. Používá proto zástupné jméno. To chápu, ale není to někde rozvedené více do hloubky? Jednoduše chápu že to funguje, chápu jak to použít ale vnitřní niance mi jasné nejsou.
//Doufám že je můj dotaz alespoň trochu pochopitelný.

Nahlásit jako SPAM
IP: 92.62.224.–
yterbium0
Stálý člen
27. 11. 2010   #2
-
0
-

tie linq dotazy sú vlastne ExtensionMethods daného typu (čiže čo dedí od IEnumerable napr.)

Stačí si vziať hocijakú už hotovú metodu a pozrieť si ju:

public static decimal Sum<TSource>(

this IEnumerable<TSource> source,
Func<TSource, decimal> selector);


číže daný lamba výraz je predávaný ako tá Func<TSource, decimal>, ono vlastne tieto lambdavýrazy boli zavedené kvôli linq aby sa dal písať "jednoduhcšie vypadajúci" kod.

A samozrejme, Ty si vieš napísať svoju ExtensionMethod, ktorá bude robiť presne to, čo chceš od nej. Napr. ja som si minule zapodieval smerodajnou odchýlkou, jednoducho som si zvolil názov, dal ako ExtensionMethod of this IEnumerable a potom Func som dal aby mi vybralo double, následne si spísal ako to má vlastne počítať (známy algoritmus je na to...) a potom sa mi už pri kolekciach čo majú implementované IEnumerable zjavila "za bodkou"

Nahlásit jako SPAM
IP: 178.41.54.–
Petrroll0
Stálý člen
27. 11. 2010   #3
-
0
-

Ano, děkuji.

Nahlásit jako SPAM
IP: 92.62.224.–
yterbium0
Stálý člen
27. 11. 2010   #4
-
0
-

btw, eešte som zabudol dodať, skvelá kniha, ktorá Ti základy Linq vysvetlí je

http://www.amazon.com/LINQ-Objects-Using-4-0-Addison-Wesley/dp/0321637003


aj keď sa zaoberá len s Linq to objects, ale úvod to je perfektný :)

Nahlásit jako SPAM
IP: 178.41.54.–
Petrroll0
Stálý člen
28. 11. 2010   #5
-
0
-

Děkuji, ale leč jsou moje schopnosti angličtiny dle mého názoru na to že se učím dva roky poměrně obstojné, tak na čtení poměrně technické knihy to zatím není.
EDIT: Chápu jak fungují rozšířené metody. Jde mi o to jak je z labda výrazu vycucnuto "Func<TSource, decimal>".

Nahlásit jako SPAM
IP: 92.62.224.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý