You are on page 1of 8

I.Ti sao li LINQ ra i?

lu lm ri, hn 2 thp nin, ngnh cng nghip phn mm mi chng kin mt cuc i thay mang tnh bc ngoc v mt ngn ng. chnh l LINQ, mt cuc cch tn kh to bo. c gi l "Back to the future", LINQ mang hi hng ca mt ngn ng lp trnh KHNG hng i tng. Tht l, Paradigm OO i n im n nh cao nht v tng rng n s cht trn nh vinh quang . Nhng khng, LINQ thi vo mt lung gi mi. Tht ra, bn cht ca n chnh l thng nht s khc bit gia hai m hnh : i tng v D liu. S khc bit ny chnh l ro cn ln nht m trong vng my chc nm qua ngnh cng nghip phn mm phi "sng chung vi l". Mt cch nm na, gi y, chng ta ch cn bit mt ngn ng m thi, khng phi bit thm SQL, XPath... i xa hn s thng nht v cch thc truy vn d liu, cc cng ngh h tr ng sau LINQ nh ORM lm cho vic lp trnh tr nn n gin hn, gn gng hn. Ni mt cch d hnh dung, s xung t gia 2 paradigm OO v Data trng ging nh s xung t gia cc h t tng v n dai dng nh cuc xung t ca ngi Palestine v Israel. Nu s "Trung gian ha gii" gip 2 bn "ngi li vi nhau" ca M, Chu u, Nga hay c Lin Hip Quc u tht bi th chng ta cng c hng lot cc cng c trung gian ORM ca hng th ba nh Hibernate, ORM, BizBlox,...cha to ra s yn tm. Cc ORM tool ny rt cc cng ch l tm thi - vn khng th no gii quyt c tn gc r ca vn . Thm ch d n ObjectSpace ca g khng l Microsoft vn cht ngay khi cha kp ra i. Ngi ta c gng gii quyt vn ny bng cch khc, sng to hn. V c v nh LINQ chnh l mt gii php hay. Mt phng php lun sng to c s dng: Tri khng chu t th t chu tri. Vi LINQ, chng ta s thy s "nhng b" r rng ca OO. N c gng tip cn Data, n ng thi t nng cao nng lc ca chnh n. -Bn Java c Hibernate th LINQ cng tng t nh vy, n a ra kh nng lp trnh mi trong .NET kiu truy vn :Sql DB, Objects v Xml -Gii php lp trnh hp nht, em n kh nng truy vn d liu theo c php SQL trc tip trong C# hay VB.NET, p dng cho tt c cc dng d liu t i tng n CSDL quan h v XML. -X l thng tin hay d liu l nhim v quan trng nht ca bt k phn mm no v mt trong nhng tr ngi chnh m cc nh pht trin hin nay phi i mt l khc bit gia ngn ng lp trnh hng i tng v ngn ng truy vn d liu, vn cng phc tp hn vi s xut hin ca XML (eXtensible Markup Language - ngn ng nh du m rng). -Hin ti, cch ph bin nht ng dng ly d liu t cc h c s d liu (CSDL) l s dng SQL (Structure Query Language - ngn ng truy vn cu trc). SQL

c c php rt khc vi nhng ngn ng lp trnh ph dng nh C# v VB.NET, do vy lp trnh vin phi nhc cng "hn gn" hai thc th khc bit ny vi nhau trong mi d n phn mm. -Mt vn khc vi SQL l n ch dng truy vn d liu trong cc CSDL dng quan h. Nu mun truy cp d liu XML hay dng khc (nh trang HTML, email...), nh pht trin li phi s dng c php truy vn khc (XPath/XQuery). gim gnh nng thao tc trn nhiu ngn ng khc nhau v ci thin nng sut lp trnh, Microsoft pht trin gii php tch hp d liu cho .NET Framework c tn gi l LINQ (Language Integrated Query), y l th vin m rng cho cc ngn ng lp trnh C# v Visual Basic.NET (c th m rng cho cc ngn ng khc) cung cp kh nng truy vn trc tip d liu i tng, CSDL v XML. -Truy vn d liu i tng trong b nh D liu cn phi vo b nh x l, nhng mt khi tch khi ni gc ca n th kh nng truy vn rt km. Bn c th d dng truy vn thng tin khch hng mc ni vi thng tin n hng ca h t CSDL SQL Server nhng khng d g thc hin tng t vi thng tin trong b nh. Trong mi trng .NET, thng tin (trong b nh) thng c th hin dng cc i tng v trc LINQ, khng c cch no mc ni cc i tng hay thc hin bt k thao tc truy vn no. LINQ chnh l gii php cho vn ny. -Vi Microsoft .NET platform, ngn ng h tr chnh chnh l C# v VB.NET. Nhng ngi lp trnh vin h thng gp rc ri, v cm thy kh chu vi vic truy cp d liu nhng ngun khc nhau. c bit l 2 loi d liu XML v CSDL.Vi CSDL l ng o nht v d liu lu tr. Cc vn v truy sut d liu nh sau: 1 - Chng ta khng lp trnh tng tc vi CSDL ti cp native language. V th li thng kh pht hin r. Kh khn trong vic qun l li xy ra. 2 - Kiu d liu khc nhau trong mi ngun d liu XML v CSDL. c bit date v time. Chnh cc nh pht trin Microsoft a ra 1 nn tng mi trong vic truy vn d liu bt k cc ngun khc nhau(Object, XML, CSDL). l LINQ, y l cng ngh m h tr c ch truy vn d liu tt c cc kiu. Nhng kiu nay bao gm mng(List, Vector), XML, CSDL v hn th na. iu quan trng nht, LINQ l tt c v truy vn, kt qu sau khi truy vn c th l tp hp cc i tng cng loi, c th l 1 i tng n, c th l tp hp con ca cc field t 1 i tng. Kt qu tr v ca LINQ ngi ta gi l sequence.Hu ht sequence l IEnumerable<T> vi T l KDL ca nhng i tng trong sequence. LINQ n s cung cp cch duy nht truy cp d liu t bt k ngun d liu no vi c php ging nhau.

II.LINQ l g ?
Theo nh ngha trn th vin MSDN ca Microsoft LINQ l mt tp hp cc phn m rng ca .Net Frame Work. N bao gm ngn ng tch hp truy vn, thip lp v chuyn i hot ng. N m rng C# v Visual Basic vi c php ngn ng bn a cho cc truy vn v cung cp cc th vin lp tn dng nhng kh nng thun li ca n.

III.Vy LINQ bao gm nhng g ?


Theo wikipedia :

Kin trc ca LINQ trong. Net Framework 3.5 Ton t operator chun: 1.Select / SelectMany 3.Sum / Min / Max / Average / Aggregate 5.Take / TakeWhile 7.OfType 9.OrderBy / ThenBy 11.GroupBy 13.Union / Intersect / Except 15.First / FirstOrDefault / Last / LastOrDefault 17.ElementAt 19.Count 1.Select / SelectMany Cc cu Chn thc hin mt d vo b su tp chn tt c cc thnh vin d liu to nn cc i tng hoc mt tp hp con ca n. Cc ton t SelectMany thc hin mt ln chiu nhiu-( "lng" ngha l), nu cc i tng trong b su tp c mt b su tp nh mt thnh vin d liu, SelectMany c th c dng chn ton b ph thu. Ngi s dng ngun cung cp mt chc nng, nh l mt i biu, cc d n m cc thnh vin d liu. La chn to ra mt i tng ca mt kiu khc nhau, trong c c mt s hoc nhiu thnh vin nh l d liu nh l lp gc. Lp phi c xc u 2.Where Cc nh iu hnh u cho php nh ngha ca mt tp cc quy tc lm v c nh gi cho tng i tng trong b su tp, trong khi cc i tng khng ph hp vi quy lut s c lc i. 3.Sum / Min / Max / Average / Aggregate Cc ton t phi mt mt predicate ly mt gi tr nht nh s t mi thnh phn trong b su tp v s dng n tm tng hp, ti thiu, ti a, hoc tng hp cc gi tr trung bnh ca tt c cc yu t trong b su tp tng ng. 4.Join / GroupJoin Cc ton t tham gia thc hin mt bn tham gia vo hai b su tp, da trn kt hp cc phm cho tng i tng trong b su tp. Phi mt hai chc nng l i din, mt cho mi b su tp, m n thc thi trn mi i tng trong b su tp ly cha kha t i tng. N cng mt mt i din thng qua ngi dng xc nh cc yu t d liu , t hai yu t ph hp, 2.Where 4.Join / GroupJoin 6.Skip / SkipWhile 8.Concat 10.Reverse 12.Distinct 14.EqualAll 16.Single 18.Any / All / Contains

nn c s dng to ra cc i tng kt qu. Cc nh iu hnh GroupJoin thc hin mt nhm tham gia. Ging nh cc nh iu hnh chn, kt qu ca mt gia ang instantiations ca mt tng lp khc nhau, vi tt c cc thnh vin d liu ca c hai loi ca cc i tng ngun gc hoc mt tp hp con ca h. 5.Take / TakeWhile Hy chn cc nh khai thc cc i tng n u tin t mt b su tp, trong khi cc nh iu hnh TakeWhile, m phi mt mt predicate, chn nhng i tng ph hp vi predicate. 6.Skip / SkipWhile B qua v SkipWhile cc nh khai thc c b sung ca Take v TakeWhile - h b qua cc i tng n u tin t b su tp mt, hoc nhng i tng ph hp vi mt predicate (i vi trng hp ca SkipWhile). 7.OfType Cc ton t OfType c s dng chn cc phn t ca mt loi nht nh.

8.Concat Cc ton t concat concatenates hai b su tp. 9.OrderBy / ThenBy Cc ton t OrderBy c s dng xc nh phn loi chnh t hng ca cc yu t trong b su tp mt theo mt s trng im. Mc nh l sp t th t tng dn, o ngc trt t, cc nh iu hnh OrderByDescending l c s dng. ThenBy v ThenByDescending xc nh tip theo t hng ca cc yu t. Chc nng trch xut cc gi tr quan trng t i tng c xc nh bi ngi s dng nh l mt i din. 10.Reverse Ngc li ton t mt b su tp o ngc. 11.GroupBy Cc ton t GroupBy mt mt i biu rng cht chit xut mt gi tr kha v tr v mt b su tp ca IGrouping<Key, Values> i tng IGrouping<Key, Values> cho mi gi tr quan trng khc bit. Cc i tng IGrouping sau c th c s dng lit k tt c cc i tng cho mt gi tr c bit quan trng. 12.Distinct Cc ton t ring bit loi b trng hp lp ca mt gi tr quan trng t mt b su tp. Chc nng ly gi tr quan trng l c cung cp nh mt i biu. 13.Union / Intersect / Except Cc ton t c s dng thc hin mt cng on, giao l v cc hot ng khc nhau trn hai trnh t, tng ng. 14.EqualAll Cc ton t EqualAll kim tra xem tt c cc yu t trong hai b su tp u c bnh ng. 15.First / FirstOrDefault / Last / LastOrDefault Cc ton t phi mt mt predicate. Cc ton t u tin tr v cc yu t u tin m sn lng lm v ng hoc nm mt ngoi l nu khng c g ph hp. Cc ton t FirstOrDefault cng ging nh cc nh khai thc u tin ngoi tr vic n tr v gi tr mc nh cho kiu phn t (thng l mt tham chiu null) trong trng hp khng c g ph hp vi predicate. Cc ton t cui truy nguyn t cui cng ph hp vi lm v, hoc nm mt ngoi l trong trng hp khng c g ph hp. LastOrDefault Cc tr v gi tr phn t mc nh nu khng c g ph hp. 16.Single Cc ton t n mt mt predicate v tr v cc yu t ph hp vi predicate. Mt trng hp ngoi l c nm nu khng c hoc nhiu hn mt yu t ph hp vi predicate. 17.ElementAt Cc nh iu hnh ElementAt ly phn t ti mt ch s c a ra trong b su tp. 18.Any / All / Contains Cc ton t Bt k kim tra nu c bt k yu t trong b su tp ph hp vi predicate. N khng chn cc phn t, nhng tr v ng cho mt trn u. Tt c cc ton t kim tra xem tt c cc yu t ph hp vi predicate. Cha cc ton t kim tra nu b su tp c mt gi tr nht nh. 19.Count Cc ton t Count m s lng cc yu t trong b su tp c.

The Standard Query operator API cng ch r mt s nh khai thc chuyn i mt b su tp vo loi hnh khc: [1] AsEnumerable: chuyn i cc b su tp loi IEnumerable<T> ToQueryable: chuyn i cc b su tp loi IQueryable<T> ToArray: chuyn i cc b su tp vo mt mng. ToList: chuyn i cc b su tp loi IList<T> ToDictionary: chuyn i cc b su tp IDictionary<K, T> loi IDictionary<K, T> lp ch mc bng phm K. ToLookup: chuyn i cc b su tp ILookup<K, T> loi ILookup<K, T> lp ch mc bng phm K. Cast: chuyn i mt t chc phi chung IEnumerable b su tp vo mt trong cc IEnumerable<T> bi mi yu t T loi. Nm mt ngoi l cho cc kiu khng tng thch. OfType: chuyn i mt t chc phi chung IEnumerable b su tp vo mt trong cc IEnumerable<T> Ch c yu t ca loi T c bao gm. Cc ton t tm kim s c xc nh trong giao din IEnumerable<T> nh phng php khuyn khch chung chung, v trin khai thc hin c th c cung cp trong lp Sequence Kt qu l, lp hc no m thc hin cc giao din IEnumerable<T> c quyn truy cp n nhng phng php ny v l queryable. LINQ cng nh ngha mt tp cc chung Func i biu, trong xc nh cc loi i biu x l bng cc phng php truy vn LINQ. Bt k chc nng bc trong mt on Func c th c s dng bi LINQ. Mi phng thc tr v mt i tng thc hin cc giao din IEnumerable<T> do , u ra ca mt ngi c th c s dng nh cc u vo khc, kt qu composability truy vn. Chc nng, tuy nhin, c lazily nh gi, ngha l, cc b su tp c lit k ch khi kt qu c ly. m c tm dng ngay sau khi trn u c tm thy, v cc i biu nh gi trn n. Khi mt i tng tip theo trong b su tp kt qu c ly ra, vic lit k cc ngun thu c tip tc vt ra ngoi yu t c nh gi. Tuy nhin, hot ng nhm, nh GroupBy v OrderBy, cng nh Sum, Min, Max, trung bnh v tng hp, yu cu d liu t tt c cc yu t trong b su tp, v mt lc lng nh gi mong mun. LINQ khng mt tnh nng ti u hoa truy vn v cc nh iu hnh tm kim s c nh gi theo th t chng c vin dn. Cc phng php LINQ c compilable trong NET Framework 2.0., Phn m rng Ngn ng Trong khi LINQ ch yu thc hin nh mt th vin cho. NET Framework 3.5, n cng nh ngha mt tp cc phn m rng ngn ng c th c thc hin bi ty chn ngn ng thc hin truy vn mt ngn ng lp u tin xy dng v cung cp ng c php vit cc truy vn. Nhng phn m rng ngn ng bc u c thc hin trong C # 3.0, VB 9,0 v Oxygene, vi cc ngn ng khc nh F # v Nemerle c h tr cng b s b. Cc phn m rng ngn ng bao gm: [2] Truy vn c php: Mt l ngn ng Vit chn mt c php truy vn rng n s nhn ra nguyn bn. Nhng t kha ngn ng phi c dch bi trnh bin dch cho cc cuc gi phng php thch hp LINQ. Cc ngn ng c th thc hin sp xp li nh iu hnh v ti u ha khc mc t kha. Ngm nh my bin: nng cao ny cho php cc bin c khai bo m khng c ch nh cc loi ca h. Cc ngn ng C # 3.0 v Oxygene tuyn b chng vi nhng t kha var Trong VB9.0, vic s dng cc t kha Dim m khng loi t khai hon thnh vic k khai nh vy. Cc i tng ny vn cn mnh m; cho cc i tng s dng cc trnh bin dch suy lun kiu suy ra loi ca cc bin. iu ny cho php kt qu ca cc truy vn c ch nh v kt qu ca h c xc nh m khng khai bo kiu ca cc bin trung gian.

Cha xc nh ngi loi: loi Cha xc nh ngi cho php cc lp hc, c cha d liu khai bo thnh vin duy nht, c suy ra bi trnh bin dch. iu ny l hu ch cho vic chn v tham gia vn hnh, cc loi qu c th khc bit vi cc loi ca cc i tng ban u. Trnh bin dch ny s dng kiu suy lun xc nh cc lnh vc cha trong cc lp hc v to ra accessors v mutators cho cc lnh vc ny. i tng Initializer: initializers Object cho php mt i tng c to ra v khi to trong mt phm vi duy nht, iu ny cho php to ra cc i biu rng cc lnh vc chit xut t mt i tng, to mt i tng mi v gn d liu trch xut cc lnh vc ca i tng mi trong mt tuyn b n , nh l cn thit chn v tham gia vn hnh. Biu thc Lambda: Lambda biu thc c s dng to ra cc i biu ni tuyn vi cc m khc. iu ny cho php cc predicates v chc nng khai thc c ghi ni tuyn vi cc truy vn. V d, trong truy vn chn tt c cc i tng trong b su tp mt vi SomeProperty t hn 10, int someValue = 5; var results = from c in someCollection let x = someValue * 2 where c.SomeProperty < x select new {c.SomeProperty, c.OtherProperty}; foreach (var result in results) { Console.WriteLine(result); } cc loi bin kt qu, c v tt c cc kt qu c suy ra bi trnh bin dch - gi s SomeCollection l IEnumerable<SomeClass> c s c SomeClass kt qu s c IEnumerable<SomeOtherClass> v kt qu s c SomeOtherClass ni SomeOtherClass s l mt trnh bin dch to ra lp vi SomeProperty ch v ti sn OtherProperty v gi tr ca h thit lp t cc iu khon tng ng ca cc i tng ngun. Cc Ton t sau c dch ra cc cuc gi phng thc nh: IEnumerable<SomeOtherClass> results = SomeCollection.Where ( c => c.SomeProperty < (SomeValue * 2) ) .Select (

c => new {c.SomeProperty, c.OtherProperty} ) foreach (SomeOtherClass result in results) { Console.WriteLine(result.ToString()); }

LINQ cung cp: - LINQ to Objects - LINQ to XML - LINQ to SQL - LINQ to DataSets - Other providers -LINQ to Objects: Cc nh cung cp c s dng truy vn trong b su tp b nh, s dng cng c truy vn thc hin ti a phng ca LINQ. Cc m c to ra bi nh cung cp ny cp n vic thc hin cc nh khai thc truy vn tiu chun nh c nh ngha trong cc lp hc Sequence v cho php cc b su tp Enumerable<T> c truy vn ti a phng. Hin hnh thc hin cc LINQ to i tng s dng v d nh O (n) tuyn tnh v tm tra cu n gin, v khng phi l ti u ha cho cc truy vn phc tp - LINQ to XML: Cc LINQ to XML cung cp dch v chuyn i mt ti liu XML vi mt b su tp ca XElement i tng, m sau truy vn i vi vic s dng ng c thc hin ti a phng c cung cp nh mt phn ca vic thc hin cc nh iu hnh truy vn tiu chun [5.] - LINQ to SQL: Cc LINQ to SQL cho php cc nh cung cp LINQ s c s dng truy vn SQL Server cng nh c s d liu SQL Server Compact c s d liu. K t khi d liu SQL Server nm trn my ch t xa, v bi v n bao gm mt cng c truy vn, LINQ to SQL khng s dng ng c ca LINQ truy vn. Thay vo , n chuyn i mt truy vn LINQ cho mt truy vn SQL l sau gi n SQL Server cho ch bin Tuy nhin, k t SQL Server lu tr cc d liu nh d liu quan h v lm vic vi LINQ d liu ng gi trong cc i tng., Hai i din phi c nh x vi nhau. V l do ny, LINQ to SQL cng nh ngha khun kh lp bn . Lp bn ny c thc hin bng cch xc nh cc lp hc tng ng vi cc bng trong c s d liu, v c cha tt c hoc mt tp hp con ca cc ct trong bng d liu nh l cc thnh vin Th ny, cng vi m hnh quan h khc chng hn nh cc thuc tnh kha chnh c quy nh s dng LINQ to SQL-thuc tnh c xc nh. V d [Table(Name="Customers")] public class Customer { [Column(IsPrimaryKey = true)] public int CustID;

[Column] public string CustName; } Hong Trung Kin_THB(^_^)

You might also like