рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ LINQ рдореЗрдВ рд▓рдВрдмреЛрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдЕрдХреНрд╕рд░ рд╣рдо рдХрд┐рд╕реА рднреА рдорд╣рддреНрд╡ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдХрд┐ рддрдХрдиреАрдХ "рд╣реБрдб рдХреЗ рддрд╣рдд" рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд рддрдХрдиреАрдХ рджрд┐рдЦрд╛рдКрдВрдЧрд╛: LINQ рдореЗрдВ рдХреЛрдб рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛, рдХреЛрдб рдЬрдирд░реЗрд╢рди, рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдЯреНрд░рд╛рдВрд╕рдкреНрд▓рд┐рдореЗрдВрдЯреЗрд╢рди, рдЯреЗрд╕реНрдЯ рдСрдЯреЛрдореЗрд╢рдиред
рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреЗрдбрд╝ рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рддрдХрдиреАрдХ рдиреЗ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рдХрд┐рдП рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗрдВред

DotNext 2018 Piter рдХреЗ рд╕рд╛рде
рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдХрдЯ - рд╡реАрдбрд┐рдпреЛ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдХреЗ рддрд╣рддред
рдореЗрд░рд╛ рдирд╛рдо рдореИрдХреНрд╕рд┐рдо рдЕрд░реНрд╢рд┐рдиреЛрд╡ рд╣реИ, рдореИрдВ рд╣рд╛рдИ-рдЯреЗрдХ рдЧреНрд░реБрдк рдЖрдЙрдЯрд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХрдВрдкрдиреА рдХрд╛ рд╕рд╣-рд╕рдВрд╕реНрдерд╛рдкрдХ рд╣реВрдВред рд╣рдо рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ, рдФрд░ рдЖрдЬ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЯреНрд░реА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рд╣рдорд╛рд░реА рдорджрдж рдХреИрд╕реЗ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреЗрдбрд╝реЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ LINQ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .NET рдЯреАрдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрдВрддрд░рд┐рдХ рддрдХрдиреАрдХ рдереА, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЗрд╕рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреБрдЫ рд▓рд╛рдЧреВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рддрд╛рдХрд┐ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдЖрдпрд╛, рдореБрдЭреЗ рдЖрдВрдд рдореЗрдВ рдЪрдврд╝рдирд╛ рдкрдбрд╝рд╛ред
рдпрд╣ рдкреВрд░реА рдХрд╣рд╛рдиреА рд╕рдордп рдореЗрдВ рдлреИрд▓реА рд╣реБрдИ рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдереАрдВ, рд╡рд┐рднрд┐рдиреНрди рдорд╛рдорд▓реЗ рдереЗред рдХреБрдЫ рдмрд╛рд╣рд░ рдЖрдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рдХреЛ рдЕрдзрд┐рдХ рдХрд▓рд╛рддреНрдордХ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рддреНрдпрддрд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реА рд╡рд┐рд╖рдп рдореЙрдбрд▓ рдкрд░ рд╣реЛрдВрдЧреЗ - рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдо рд╕рднреА рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдФрд░ рдПрдХ рдЪреЗрдХрдорд╛рд░реНрдХ "рдлреЙрд░ рд╕реЗрд▓" рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрд╛рдЧ рдкрд░ рдпрд╣ рдЪреЗрдХрдорд╛рд░реНрдХ рдЕрдВрдХрд┐рдд рд╣реИред

рд╣рдо рдХреБрдЫ DbContext рдпрд╛ NHibernate рд▓реЗрддреЗ рд╣реИрдВ, рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╣рд╛рдВ (), рд╣рдо IsForSale рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВред
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗрдВред рд╡реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдкреНрд░рдмрдВрдзрдХ рдЖрддрд╛ рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рднреА рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЗрд╡рд▓ рдЙрди рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрд╛рдЧ рдкрд░ рд╢реЗрд╖ рд╣реИрдВ, рдЪреЗрдХ рдорд╛рд░реНрдХ рдХреЛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝ рд▓реЗрддреЗ рд╣реИрдВред рдЕрдм рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВ, рд╣рдо рдЙрдирдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

LINQ рдХреЛ рдПрдбрд┐рдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣рд╛рдБ рд╕рдм рдареАрдХ рд╣реИ?
рдирд╣реАрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ IsAvailable рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореИрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░рд╛ рдХреЛрдб рд╣реИ, рдФрд░ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд╛рддрд╛ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╣рдо рдЙрд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реА рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдРрд╕реА рдХрд╣рд╛рдиреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕ рд▓реИрдВрдмрдбрд╛ рдХреЛ рд▓рд╛рдЗрдирдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рджреЛрдиреЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
Where(x => x.IsForSale && x.InStock > 0) IsAvailable => IsForSale && InStock > 0;
рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдпрд╣ рд▓рдВрдмрд╛ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ Ctrl + Shift + F рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рд╕рднреА рдХреЛ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ - рдмрдЧ рдФрд░ рд╕рдордпред рдореИрдВ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╣рдо рдЗрд╕ рддрд░рдл рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдФрд░ ToList () рдХреЛ рдХрд╣рд╛рдВ () рдХреЗ рд╕рд╛рдордиреЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдирд┐рд░реНрдгрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд▓рд╛рдЦ рдХрд╛ рд╕рд╛рдорд╛рди рд╣реИ, рддреЛ рд╣рд░ рдХреЛрдИ рд░реИрдо рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдарддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдЯреЛрд░ рдореЗрдВ рддреАрди рдЙрддреНрдкрд╛рдж рд╣реИрдВ, рддреЛ рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдИ-рдХреЙрдорд░реНрд╕ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдиреЗ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд▓реИрдореНрдмреНрдбрд╛ рдХреА рд╕рдорд╛рдирддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЙрдирдХреЗ рдкрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рд╣реИред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдлрд╝рдВрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ, рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреЗрдбрд╝ рд╣реИред рдпрд╣ рдПрдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдкреНрд░рдХрд╛рд░ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдмрд╛рдпрдЯреЗрдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рд╕рдВрдХрд▓рди () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдкреАрдЖрдИ .NET рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ - рд╕рдВрдХрд▓рд┐рдд, рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред
рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рдХреИрд╕реЗ рдЬрд╛рдПрдВ? рд╡рд╣рд╛рдБ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ? рдпрджрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, LISP рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдПрдХ рдЙрджреНрдзрд░рдг рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдХреЛрдб рдХреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди .NET рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реИред
рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдпрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ?
рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рдВрдмреЛрджреЗ рд╣реИрдВ, рд╣рдо рдпрд╣ рджрд╛рд░реНрд╢рдирд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдХреНрдпрд╛ рд╣реИ: рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреЗрдбрд╝ рдпрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ред
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЬрд╡рд╛рдм рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдЪреВрдВрдХрд┐ рдПрдХ рдЕрджреНрднреБрдд рд╕рдВрдХрд▓рди () рд╡рд┐рдзрд┐ рд╣реИ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкреЗрдбрд╝ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдПрдХ рдзреАрдореА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдо рд╣рд░ рдЬрдЧрд╣ рдРрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдЖрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЗрд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдерд╛, рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрдореА рд╣реЛрдЧреАред рдЖрдк рдЗрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗред

рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдорд╡рд░реНрддреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рд╕реБрдиреА рд╣реИ, рддреЛ рдЖрдк рд╕рдорд╡рд░реНрддреА (рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╕ рдЬрд╛рдирддреЗ рд╣реИрдВ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдореИрдВ рдХреИрд╢рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ (рддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде, рддрд╛рд▓реЗ рдирд╣реАрдВ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдмрд╕ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд╡рд░реНрддреА рдЫрд╛рдпрд╛ рдореЗрдВ рдПрдХ рд╕рд░рд▓ GetOrAdd () рд╡рд┐рдзрд┐ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕реЗ рд╕рдорд╡рд░реНрддреА рдЫрд╛рдпрд╛ рдореЗрдВ рдкреЙрдк рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдХреИрд╢ рдХрд░рдирд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рд╣рдо рд╕рдВрдХрд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕рдм рдХреБрдЫ рддреЗрдЬреА рд╕реЗ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред

рдлрд┐рд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рд╣рдорд╛рд░реЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ IsAvailable () рдХреЗ рд╕рд╛рде рд░рд┐рдлреИрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, IsAvailable () рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдо рд╕реЗ рдХрдо рджреЛ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
Microsoft.Linq.Translations рдФрд░
Signum Framework (рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдХрдВрдкрдиреА рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдврд╛рдВрдЪрд╛)ред рджреЛрдиреЛрдВ рд╡рд╣рд╛рдБ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдХрд╣рд╛рдиреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВред рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдПрдкреАрдЖрдИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рд╕реНрд▓рд╛рдЗрдб рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдерд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рддрдХ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдбреЗрд▓реАрдЧреЗрдЯ рдбреЗрдХреЛрдореНрдкрд╛рдЗрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдмреНрд░реЗ рдкрд░
рдПрдХ рд▓реЗрдЦ рдЖрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд▓реЗрдЦрдХ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рд╕рднреА рд╕рдВрдХрд▓рди рдЦрд░рд╛рдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдереЗ, рдФрд░ рдЖрдк рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдЙрди рдкрд░ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХ methodBody.GetILAsByteArray () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ; рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕реЗ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╛рдЗрдЯ рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЗ рдкреВрд░реЗ рдЖрдИрдПрд▓ рдХреЛрдб рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдореЗрдВ рдЖрдЧреЗ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рдПрдХ рд╡рд╕реНрддреБ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд▓реВрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЯреНрд░реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╕рдВрдХреНрд░рдордг рднреА рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рд╛рде рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЗрдирд▓реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХрдореНрдкреНрдпреВрдЯреЗрдб рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рдЯрдХрд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо IsAvailable () рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ IL-code рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЯреНрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ IsAvailable () рдХреЙрд▓ рдХреЛ рдЗрд╕ рдЧреЗрдЯрд░ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕реЗ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдРрд╕реА рдореИрдиреБрдЕрд▓ рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред

рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ToList () рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХреЛ Decompile () рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдореВрд▓ рдХреНрд╡реЗрд░реА рдФрд░ рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рдХреНрд╡реЗрд░реА рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕рдм рдХреБрдЫ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрд▓рд┐рдЧреЗрдЯ рдбреЗрдХреЛрдореНрдкреЗрд▓рд░ 0.23.0 рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдХреЛрдИ рдХреЛрд░ рд╕рдкреЛрд░реНрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд▓реЗрдЦрдХ рдЦреБрдж рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЧрд╣рд░реЗ рдЕрд▓реНрдлрд╝рд╛ рд╣реИ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдзреВрд░реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрджреНрдпрдкрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред
рдмреВрд▓рд┐рдпрди рдСрдкрд░реЗрд╢рди
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдмреВрд▓рд┐рдпрди рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ IsForSale (), InStock ()> 0, рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреА рд╕реНрдерд┐рддрд┐ "AND" рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рд╢рд░реНрдд рд╣реИ, рдпрд╛ "рдУрдЖрд░" рд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

"рдФрд░," рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдХреНрд╡реЗрд░реА рдкреНрд░рджрд╛рддрд╛ рдкрд░ рд╕рднреА рдХрд╛рдо рдХреЛ рдзреЛрдЦрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбрдВрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╣рд╛рдБ () рд▓рд┐рдЦреЗрдВ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

рдпрджрд┐ "OR" рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╣рд╛рдВ LINO () LINQ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдСрдкрд░реЗрдЯрд░ | рднрд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдирд┐рд░реНрджреЗрд╢
рдпрджрд┐ рдЖрдк рдЗрд╡рд╛рдВрд╕ рдХреЗ рдбреАрдбреАрдбреА рдкреБрд╕реНрддрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрдиред рдХрдИ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рд╣реИрдВ рдФрд░ рдЖрдк рдмреВрд▓рд┐рдпрди рддрд░реНрдХ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдРрд╕рд╛ рд╢рдмреНрдж рд╣реИ, рдЬреЛ рдЬрд╛рд╡рд╛ рд╕реЗ рдПрдХ рдкреБрд░рд╛рдирд╛ рдкреИрдЯрд░реНрди рд╣реИред рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдПрдХ рдореЗрдВ, рдХреЛрдИ LINQ рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ isSatisfiedBy () рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдереАред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕реЗ
LinqSpecs рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реНрд▓рд╛рдЗрдб рдкрд░ рдЖрдк рдЗрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╣реИред
рдпрд╣рд╛рдВ, рд╕рднреА рдмреВрд▓рд┐рдпрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдЪреНрдЪреЗ рдФрд░ рдЭреВрдареЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рджреЛ рдСрдкрд░реЗрдЯрд░ "&" рдФрд░ "" "рдХрд╛рдо рдХрд░реЗрдВ, рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдПрдореНрдкрд░рд╕реЗрдВрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдЕрдЧрд▓рд╛, рд╣рдо рдирд┐рд╣рд┐рдд рдмрдпрд╛рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рдХ рдХреЛ рдпрд╣ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рджреЛрдиреЛрдВ рд╣реИрдВред рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдЬрд╣рд╛рдВ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди <> рдпрд╛ рдлрдВрдХ <> рдлрдВрдХреНрд╢рди рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдк рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбреЗрдб рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдпрд╛ IsSatisfiedBy рдЧреБрдгреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдФрд░ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдЧрд╛ред

IsSatisfiedBy () рдЬреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЖрдИ рд╣реИ рдЙрд╕реЗ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЗрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рд╣рдордиреЗ рдмреВрд▓рд┐рдпрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИред рдЕрдм рдпрд╣ рд╕рдм рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реНрдпрд╛рдкрд╛рд░ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд рдФрд░ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
public static readonly Spec<Product> IsForSaleSpec = new Spec<Product>(x => x.IsForSale); public static readonly Spec<Product> IsInStockSpec = new Spec<Product>(x => x.InStock > 0);

рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрд╛рдкрд╛рд░ рдирд┐рдпрдо рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХрд╣реАрдВ рднреА рдЦреЛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛, рдЗрд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ, рд╡рд┐рд╖рдп рдореЙрдбрд▓ рдХреЛ рд╕рдордЭреЗрдВред

рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдФрд░ (), рдпрд╛ (рдФрд░) рдФрд░ () рд╡рд┐рдзрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред рдпреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ, рдЗрдиреНрд╣реЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╣ рдерд╛ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╛рдлреА рдкреНрд░рд▓реЗрдЦрди рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рд╡рд┐рд╕реНрддреГрдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, Ctrl + Space рджрдмрд╛рдпрд╛, OrElse () рджреЗрдЦрд╛, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ред рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рд▓реИрдореНрдмреНрдбрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЙрддреНрддреАрд░реНрдг рдХреАред рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдмреЙрдбреАред рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдПрдХ рдмреЙрдбреА рднреА рд╣реЛрддреА рд╣реИред OrElse () рдореЗрдВ, рдЖрдкрдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, "рдПрдВрдб" рдФрд░ "рдУрдЖрд░" рдХреЗ рд╕рд╛рде рд▓реИрдореНрдмреНрдбрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдмреЗрдХрд╛рд░ рд╣реИ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣рдо рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдПрдХ NotSupportedException рдереА рдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЕрдм рдкреИрд░рд╛рдореАрдЯрд░ 1, рдкреИрд░рд╛рдореАрдЯрд░ 2, "рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рдореИрдВрдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рдХрд╣рд╛рдиреА рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕реА # 7.0
рддрдм рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдкреНрд░рд╣рд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЧреВрдЧрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЕрд▓реНрддрд╛рд╣рд╛рд░реА рдХреА рдкреБрд╕реНрддрдХ "
рдирдЯрд╢реЗрд▓ рдореЗрдВ C # 7.0 " рдХреЛ рдкрд╛рдпрд╛ред

рдЬреЛрд╕реЗрдл рдЕрд▓рдмрд╣рд╛рд░реА, рдЬреЛ рд▓реЛрдХрдкреНрд░рд┐рдп LINQKit рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ LINQPad рдХреЗ рдбреЗрд╡рд▓рдкрд░ рднреА рд╣реИрдВ, рдмрд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдмрд╕ рд▓реЗ рдФрд░ рд╕рдВрдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рдореИрдЬрд┐рдХ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓реЗрддреЗ рд╣реИрдВред Invoke (), рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдкреНрд░рд╢реНрди: рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреНрдпрд╛ рд╣реИред рдЗрдВрд╡реЛрдХ ()? рдлрд┐рд░ рд╕реЗ Google рдкрд░ рдЬрд╛рдПрдВред рдпрд╣ рдПрдХ InvocationExpression рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рддрд░реНрдХ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдпрд╛ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдЖрдкрдХреЛ рдЕрднреА рдкрдврд╝рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓реЗрддреЗ рд╣реИрдВред рдЗрдВрд╡реЛрдХ (), рд╣рдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣реА рдмрд╛рдд рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╕рд╛рдл рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХреБрдЫ рдЬрд╛рджреВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдЗрдВрд╡реЛрдХ () рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдЙрд╕реА рд╕рдордп, рдпрджрд┐ рдЖрдк рдИрдПрдлрдПрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдпреБрдХреНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред рдЗрдВрд╡реЛрдХ () рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рд╡реИрд╕реЗ, рдИрдПрдл рдХреЛрд░ рдиреЗ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдИрдПрдл 6 рдкрдХрдбрд╝ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрд▓рдмрд╛рд╣рд░реА рд╕рд┐рд░реНрдл AsExpandable () рд▓рд┐рдЦрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреА рд╣реИ, рдФрд░ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдЖрдк рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЙрдкрд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдореИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдореНрдкрд╛рдЗрд▓ () рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдЕрдЧрд░ рд╣рдо AsExpandable () рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрд▓реНрдмрд╛рд╣рд╛рд░реА рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ, рдпрд╣ рдХрдВрдкрд╛рдЗрд▓ () рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдПрдХ рд╢рдмреНрдж рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рд╕реНрд░реЛрдд рдореЗрдВ рдЪрдврд╝ рдЧрдпрд╛ред AsExpandable () рд╡рд┐рдзрд┐ рдХреНрдпрд╛ рд╣реИ? рдЗрд╕рдореЗрдВ рдХреНрд╡реЗрд░реА рдФрд░ QueryOptimizer рд╣реИред рд╣рдо рдХреЛрд╖реНрдардХ рд╕реЗ рджреВрд╕рд░реЗ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдЭрд▓рдХреЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐: рдпрджрд┐ 3 + 5 рд╣реИ, рддреЛ рдпрд╣ 8 рдбрд╛рд▓ рджреЗрдЧрд╛ред

рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░ () рд╡рд┐рдзрд┐ рдХреЛ рдмрд╛рдж рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рдХреНрд╡реЗрд░реАрдУрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░, рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд╛рддрд╛ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ () рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдЗрд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдпрд╣ рдЖрдЧрдВрддреБрдХ рд╣реИ, рдЕрдВрджрд░ рд╣рдо рдЧреИрд░-рдореВрд▓ рд╕рдВрдХрд▓рди () рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рдФрд░ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд░реНрде рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕рдВрдХрд▓рди рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рд╢рд╛рдирджрд╛рд░, рд▓реЗрдХрд┐рди рдпрд╣ 80 рдХреЗ рд╕реНрддрд░ рдХреА рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдореЗрдВ рджрдо рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкреНрд░рднрд╛рд╡ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк рдХреА рддрд▓рд╛рд╢ рдореЗрдВ
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рджреВрд╕рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреАред рдФрд░ рдорд┐рд▓ рдЧрдпрд╛ред рдРрд╕реЗ рдкреАрдЯ рдореЛрдВрдЯрдЧреЛрдорд░реА рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА
рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЕрд▓рдмрд╣рд╛рд░реА рдлреЗрдХ рд╣реИред

рдкреАрдЯ рдиреЗ рдИрдПрдл рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХреА, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд┐рдирд╛ рд╕рдм рдХреБрдЫ рдЧрдардмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдпрд╛ред рдЗрд╡реЛрдХ ()ред рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдШрд╛рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдерд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдпреЛрдЬрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рджреВрд╕рд░реЗ рдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред рд╡реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗред рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкреИрд░рд╛рдореАрдЯрд░ рд╣рд╡рд╛ рдореЗрдВ рд▓рдЯрдХреЗ рд░рд╣реЗред рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрдЯреНрдЯреА рдмрд╛рдВрдзрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рднрд╛рд╡реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рд▓рдВрдмреЛрджрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдирд╣реАрдВ рд╣реИред рд╣рдо рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреА рд░рдЪрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рджреВрд╕рд░реЗ рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрд╛рдБрдзрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ, рдкреВрд░реЗ рд╢рд░реАрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛ рджрд┐рдпрд╛ рдерд╛ред

рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рд╕рднреА рдШрд╛рдд рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрдВрд╡реЛрдХ ()ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреАрдЯ рдореЛрдВрдЯрдЧреЛрдорд░реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдпрд╣ рдФрд░ рднреА рдардВрдбрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ Compose () рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рд╣рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ AndAlso рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХреНрд╕рдкреЗрдВрдбреЗрдмрд▓ () рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬреЛ рдмреВрд▓рд┐рдпрди рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рдЗрдХрд╛рдЗрдпреЛрдВ
рд╕рдм рдХреБрдЫ рддрдм рддрдХ рдареАрдХ рдерд╛ рдЬрдм рддрдХ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рдореБрдЪреНрдЪрдп рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред рдЬреЛ рд▓реЛрдЧ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ: рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдбреЛрдореЗрди рдореЙрдбрд▓ рд╣реИ рдФрд░ рдЖрдк рдЙрди рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рддреЛ рдЕрд▓рдЧ рд╕реЗ рд▓рдЯрдХрд╛ рд╣реБрдЖ рдПрдХ рдкреЗрдбрд╝ рдПрдХ рдХреБрд▓ рд╣реИред рдСрд░реНрдбрд░ рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рдСрд░реНрдбрд░ рдХреЛ рдПрдЧреНрд░реАрдЧреЗрдЯ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдСрд░реНрдбрд░ рд╕рд╛рд░ рдПрдХрддреНрд░реАрдХрд░рдг рд░реВрдЯ рд╣реИред

рдпрджрд┐, рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрднреА рднреА рдПрдХ рд╡реНрдпрд╡рд╕рд╛рдп рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИрдВ, рддреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реЗрдЯрд┐рдВрдЧ рд╣реИ рдЬреЛ 50 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рд░реНрдХреЗрдЯрд░реНрд╕ рдиреЗ рдХрд╣рд╛ рдФрд░ рд╣рдо рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╕рд╛рдорд╛рди рдХреЛ рдПрдХ рдЕрдЪреНрдЫреА рд╢реНрд░реЗрдгреА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдлрд┐рд░ рд╕реЗ рдпрд╣ рдмреБрд░рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкреНрд░рдХрд╛рд░ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗред рд╢реНрд░реЗрдгреА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдлрд┐рд░, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк: SelectMany () рдХрд╛ рдЪрдпрди Select () рд╕реЗ рдХрд░реЗрдВред рдореИрдВ рдпрд╣рд╛рдВ рджреЛ рдЪреАрдЬреЛрдВ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реВрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрд╡реЗрд░реА рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ SelectMany () рд╕рдорд░реНрдерди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдпрджрд┐ рдХреЛрдИ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд╛рддрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЬреЛ рдкрд╣рд▓реА рдЪреАрдЬ рдХрд░реЗрдЧрд╛, рд╡рд╣ рд╣реИ рдереНрд░реЛ рдЕрдкрд╡рд╛рдж рдФрд░ рд╕рд┐рд▓реЗрдХреНрдЯрдордиреА () рдирд╣реАрдВ рд╣реИред рдФрд░ рддреАрд╕рд░рд╛ рдмрд┐рдВрджреБ: рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ SelectMany () рдпрд╛ рддреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдпрд╛ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдПрдХ SELECT рдХреНрд╡реЗрд░реА рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рд░рдЪрдирд╛
рдореИрдВ Select () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, SelectMany () рдХрд╛ рдирд╣реАрдВред

рд▓рдЧрднрдЧ рдЙрд╕реА рд╕рдордп, рдореИрдВрдиреЗ рд╢реНрд░реЗрдгреА рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ рдФрд░ рд╕реЛрдЪрд╛ рдХрд┐ рдпрджрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмреВрд▓ рдореЗрдВ рдЙрддреНрдкрд╛рдж рд╕реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрд╛рдж рд╕реЗ рд╢реНрд░реЗрдгреА рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╢реНрд░реЗрдгреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИ, рдлрд┐рд░ рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рджреВрд╕рд░реЗ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдВ, рд╣рдореЗрдВ рд╡рд╣ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП, рдЙрддреНрдкрд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ред рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░рдЪрдирд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдПред

рдлрд┐рд░ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╣рд╛рдВ () рд╡рд┐рдзрд┐ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЗрд╕ рд╕рдВрдмрдВрдзрд┐рдд рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдмрд╣реБрдд рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
public static IQueryable<T> Where<T, TParam>(this IQueryable<T> queryable, Expression<Func<T, TParam>> prop, Expression<Func<TParam, bool>> where) { return queryable.Where(prop.Compose(where)); }
рдХрдореНрдкреЛрдЬрд╝ () рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде, рдпрд╣ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рдЗрдирдкреБрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣реА рд╣реИред

рдЕрдм рдЖрдк рдРрд╕рд╛ рдХрд╣рд╛рдВ () рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рднреА рд▓рдореНрдмрд╛рдИ рдХреА рдорд╢реАрди рд╣реИ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╢реНрд░реЗрдгреА рдореЗрдВ рдПрдХ SuperCategory рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЖрдЧреЗ рдХреЗ рдЧреБрдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
"рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореЗрдЯрд╛-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдПрдХ рдЧрдВрдз рд╣реИ!" рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ред
рдкреНрд░рдХреНрд╖реЗрдкрдг
рд╣рдо рдореЗрдЯрд╛-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рдХрдо рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрдбрд╝реЗред

рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдХреНрд╖реЗрдкрдг рд╣реИред рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЗрдХрд╛рдИ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реЛрддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рд╣рдо рдЗрд╕реЗ рд╕рд╛рдордиреЗ рд╕реЗ рдЧреБрдЬрд╛рд░рддреЗ рд╣реИрдВ, JSON рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдЧреНрд░реАрдЧреЗрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рд╕рд╛рд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЖрдк рдРрд╕рд╛ рдЪрдпрди () рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдХрд░ рдпрдерд╛рд╕рдВрднрд╡ LINQ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдмрд╛рдК рд╣реИред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╕рднреА рд▓реЛрдЧ ProjectToType () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХрдо рд╕реЗ рдХрдо рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдСрдЯреЛрдореИрдкрд░ рдФрд░ рдореИрдкрд╕реНрдЯрд░ред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ AutoMapper рдореЗрдореЛрд░реА рдореЗрдВ рдореИрдкрд┐рдВрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрд╡реЗрд░реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рднреА рд╣реИ, рдФрд░ рдпрд╣ SQL рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдореИрдиреБрдЕрд▓ рдХреНрд╡реЗрд░реА рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдк LINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реБрдкрд░-рдЧрдВрднреАрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдХрдореА рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдорд╢реАрди рдХрд╛ рдХрд╛рдо рд╣реИ, рди рдХрд┐ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ред
рдЫрд╛рдирдиреЗ
рдпрджрд┐ рд╣рдо рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рди рдХрд░реЗрдВред

рдпрд╣рд╛рдБ рднреА рдХреЛрдб рд╣реИред рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЖрддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ: рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдЖрдпрд╛, рдХрд╣рд╛рдБ рдЬреЛрдбрд╝реЗрдВ (), рджреВрд╕рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдЖрдпрд╛, рдХрд╣рд╛рдБ рдЬреЛрдбрд╝реЗрдВ ()ред рдХрд┐рддрдиреЗ рдлрд┐рд▓реНрдЯрд░ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ рдФрд░ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЙрдкреА-рдкреЗрд╕реНрдЯред

рдпрджрд┐ рд╣рдо, AutoMapper рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ AutoFilter, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд┐рдЦреЗрдВ рддрд╛рдХрд┐ рд╡рд╣ рд╕реНрд╡рдпрдВ рд╕рдм рдХреБрдЫ рдХрд░реЗ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ - рдХрдо рдХреЛрдбред

рдпрд╣ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓реЗ рд▓реАрдЬрд┐рдПред рддреЗрдЬ, рдбреАрдЯреАрдУ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЪрд▓реЗрдВред рд╣рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдг рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкрд╣рдЪрд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЕрд╢рдХреНрдд рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдбреАрдЯреАрдУ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░рдВрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрдВрдЯ рдФрд░ рдиреБрд▓реНрд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЕрдиреНрдп рдЕрд╢рдХреНрдд рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рдХрд╛рд░ рдорд┐рд▓рд╛рди рд╣реЛ рддреЛ рд░реВрдкрд╛рдВрддрд░рдг рдЬреЛрдбрд╝реЗрдВред рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд░рд╛рдмрд░ (), рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛ рд╕рдорд╛рдирддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

рдлрд┐рд░ рд▓реИрдореНрдмреНрдбрд╛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдПрдВ: рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд╣реИрдВ, рддреЛ "рдПрдВрдб" рдпрд╛ "рдУрдЖрд░" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдСрд░реНрдбрд░рдмрд╛рдп () рд╡рд┐рдзрд┐ рдореЗрдВ рджреЛ рдЬреЗрдиреЗрд░рд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рднрд░рдирд╛ рд╣реЛрдЧрд╛, рджреЛ рдЬреЗрдиреЗрд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдСрд░реНрдбрд░рдмрд╛рдп () рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдлреНрд▓реЗрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЗрдХрд╛рдИ рд╣рдо рд▓реЗ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВред рд╕рдВрдкрддреНрддрд┐ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдпрд╣ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдкреНрд░рд╢реНрди рдЙрдарддрд╛ рд╣реИ: рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП () - рдЗрдХрд╛рдИ рд╕реНрддрд░ рдкрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рдереА рдпрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рдмрд╛рдж, рдФрд░ рд╡рд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдпрд╣ рджреЛрдиреЛрдВ рд╕рдЪ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ, рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡реНрдпрд╛рдкрд╛рд░ рдирд┐рдпрдо, рдФрд░ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЬреЛрдирд╛ рдФрд░ рд╕рдВрдЬреЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреЛрдИ рдЧрд▓рддреА рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдЖрдпрд╛рдореА рдкрд░рдд рд╣реИред рдФрд░ рдлрд┐рд▓реНрдЯрд░ UI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рдбреАрдЯреАрдУ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдк рджреЛ рдХреЛ рдХрд╣рд╛рдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ ()ред рдЗрд╕ рдмрд╛рдд рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХреНрд╡реЗрд░реА рдкреНрд░рджрд╛рддрд╛ рдЗрд╕ рдХреБрдПрдВ рдХреЛ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ ORM рд╕рдорд╛рдзрд╛рди рд╡реИрд╕реЗ рднреА рдЦрд░рд╛рдм SQL рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдпрд╣ рдХрд╣рд╛рдиреА рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рд╕реМ рдмрд╛рд░ рд╕реБрдирдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдмрд╛рд░ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЕрдм рд╕реНрдЯреЛрд░ рдореЗрдВ рддреАрди рдЙрддреНрдкрд╛рдж рд╣реИрдВ: рд╕реНрдирд┐рдХрд░реНрд╕, рд╕реБрдмрд╛рд░реВ рдЗрдореНрдкреЗрд░реНрдЬрд╝рд╛ рдФрд░ рдорд╛рд░реНрд╕ред рдЕрдЬреАрдм рджреБрдХрд╛рдиред рдЖрдЗрдП Snickers рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣рд╛рдБ рд╣реИ рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реМ рд░реВрдмрд▓ рдХреНрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕реНрдиреАрдХрд░реНрд╕ред рдФрд░ 500 рдХреЗ рд▓рд┐рдП? рдЬрд╝реВрдо рдЗрди рдХрд░реЗрдВ, рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдФрд░ 100500 рд╕реБрдмрд╛рд░реВ рдЗрдореНрдкреНрд░реЗрдЬрд╝рд╛ рдХреЗ рд▓рд┐рдПред рдорд╣рд╛рди, рд╡рд╣реА рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред
рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдФрд░ рдореВрд▓реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВред рд╡рд╣рд╛рдВ рдХрд╛ рдХреЛрдб рдЙрддрдирд╛ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╡рд╣ рдерд╛ред рдпреЗ рдлрд┐рд▓реНрдЯрд░ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рднреА рд╣реЛред рдпрджрд┐ рдЖрдк рдирд╛рдо рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реБрдмрд╛рд░реВ рднреА рдореМрдЬреВрдж рд╣реИред рдФрд░ рдореЗрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдмрд░рд╛рдмрд░ () рдерд╛ред рдРрд╕рд╛ рдХреИрд╕реЗ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдХреЛрдб рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрдХреНрд╡рд╛рд▓реНрд╕ () рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдЗрди рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдФрд░ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреНрд░реАрдЯ рдореИрдЬрд┐рдХ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ String рдЯрд╛рдЗрдк рд╣реИ, рддреЛ рд╣рдореЗрдВ Equals () рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ StartWith () рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рднреА рдорд┐рд▓рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдлрд╝рд┐рд▓реНрдЯрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЖрдк Ctrl + Shift + R рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рдзрд┐ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк "рд░рдгрдиреАрддрд┐" рдкреИрдЯрд░реНрди рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдкрд╛рдЧрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд╣реА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдЖрдк рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА UI рддрддреНрд╡реЛрдВ рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рддрд╛рд░ рдПрдХ рддрд░рд╣ рд╕реЗ рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдореЗрдВ рдкреИрд╕реЗ рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рд╕рдордиреНрд╡рдп рдХрд░реЗрдВ, рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦреЗрдВ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕реЗ рдирд╣реАрдВ рддреЛрдбрд╝реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ рдЖрдкрдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╣реИред
рдорд╛рдиреНрдпрддрд╛
рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕рддреНрдпрд╛рдкрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп
TComb.validation рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ред рдЯреАрд╕реАрдмреЙрдо рдЯрд╛рдЗрдк рд╕рдВрдпреЛрдЬрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рд╢реЛрдзрди, рд╕реБрдзрд╛рд░ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА рдЬреЗрдПрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реВрдиреНрдп рдкреНрд░рдХрд╛рд░ рдпрд╛ рддреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рд╢реВрдиреНрдпред
рдлрд┐рд░ рдорд╕реНрддреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ рд╡рд┐рдзреЗрдп рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЕрдзрд┐рдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╡рд┐рдзреЗрдп x> = 0 рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рд╕реЗ рдЖрдк рдЕрдкрдиреА рдХреЛрдИ рднреА рдорд╛рдиреНрдпрддрд╛ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рд╢рд╛рдпрдж, рд▓реИрдореНрдмрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рднреА рд╣реИрдВред
рдХреЙрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдПрдХ рд╣реА рдкрд░рд┐рд╢реЛрдзрди рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ C # рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, IsValid () рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред public class RefinementAttribute: ValidationAttribute { public IValidator<object> Refinement { get; } public RefinementAttribute(Type refinmentType) { Refinement = (IValidator<object>) Activator.CreateInstance(refinmentType); } public override bool IsValid(object value) => Refinement.Validate(value).IsValid(); }
рд╣рдо ASP.NET MVC рдореЗрдВ рдорд╛рдирдХ DataAnnotations рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░реЗред рд╣рдо RefinementAttribute рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (), рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдЯрд╛рдЗрдк рдХрд░реЗрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ RefinementAttribute рдЬреЗрдиреЗрд░рд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ .NET рдореЗрдВ рдЬреЗрдиреЗрд░рд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдХреЛ рдкреБрдирд░реНрд╡рд┐рддреНрдд рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред AdultRefinement, рд╡рд╣ рдЖрдпреБ 18 рд╕реЗ рдЕрдзрд┐рдХ
рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рд╣рдХ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рддреНрдпрд╛рдкрди рд╕рдорд╛рди рдХрд░реЗрдВред NoJS рд╕рдорд░реНрдердХреЛрдВ рдиреЗ JS рдкрд░ рдмреИрдХрд┐рдВрдЧ рдФрд░ рдлреНрд░рдВрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдареАрдХ рд╣реИ, рдореИрдВ C # рдореЗрдВ рд╡рд╛рдкрд╕ рдФрд░ рдЖрдЧреЗ рд▓рд┐рдЦреВрдВрдЧрд╛, рдпрд╣ рдареАрдХ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ JS рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ JSX, ES6 рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ? рд╣рдо рдЖрдЧрдВрддреБрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдПрдХ рдЕрд▓рдЧ рд▓рдЧрд╛рддрд╛рд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдорд╛рдорд▓рд╛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рднреА рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ regexp рд╣реИ, рддреЛ StringBuilder рд▓реЗрдВ, regexp рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рджреЛ рд╡рд┐рд╕реНрдордпрдмреЛрдзрдХ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдПрд╕ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рдмреВрд▓ рдХреЗ рд▓рд┐рдП рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛, рддрд╛рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред { predicate: тАЬx=> (x >= 18)тАЭ, errorMessage: тАЬFor adults only┬╗ }
рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рд░рд┐рдлрд╛рдЗрдирд┐рдВрдЧ рд╣реИ, рдЬреЛ рдмреИрдХрдПрдВрдб рд╕реЗ рдЖрддреА рд╣реИ, рдПрдХ рд▓рд╛рдЗрди рдкреНрд░реЗрдбрд┐рдХреЗрдЯ рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ JS рдореЗрдВ рдХреЛрдИ рд▓реИрдореНрдмрдбрд╛ рдФрд░ рдПрд░рд░рдореИрд╕реЗрдЬ рдирд╣реАрдВ рд╣реИ "рдХреЗрд╡рд▓ рд╡рдпрд╕реНрдХреЛрдВ рдХреЗ рд▓рд┐рдП"ред рдЖрдЗрдП рдлреЙрд░реНрдо рднрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд╣рдо рдмреИрдХрдПрдВрдб рд╕реЗ UserRefinment () рдореЗрдердб рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдПрдВрдб рдПрд░рд░ рдореЗрд╕реЗрдЬреЗрдЬ рд╕реЗ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд░рд┐рдлрд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рд▓реИрдореНрдбрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП eval рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рд╣рдЯрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдмрджрд▓ рджреЗрдВ, рд╕рддреНрдпрд╛рдкрди рдЬреЗрдПрд╕ рдкрд░ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛ред рдпреВрдирд┐рдЯ рджрд░реНрдЬ рдХрд░реЗрдВ, рднреЗрдЬреЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣рд╛рдБ рдЭреВрдард╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреЛрдб рдЕрд▓рд░реНрдЯ рд╣реИред рдЬрдм рд╣рдо onSubmit рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдЕрд▓рд░реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдмреИрдХрдПрдВрдб рд╕реЗ рдХреНрдпрд╛ рдЖрдпрд╛ред рдФрд░ рдмреИрдХрдПрдВрдб рдЗрддрдирд╛ рд╕рд░рд▓ рдХреЛрдб рд╣реИред
рд╣рдо рдХреЗрд╡рд▓ Ok (ModelState.IsValid) рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдЬреЛ рд╣рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдлреЙрд░реНрдо рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рд╢реЛрдзрди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред using тАж namespace DemoApp.Core { public class User: HasNameBase { [Refinement(typeof(AdultRefinement))] public int Age { get; set; } } }
рдпрд╣реА рд╣реИ, рд╕рддреНрдпрд╛рдкрди рдмреИрдХрдПрдВрдб рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╕ рд▓рдВрдмреЛрджрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рд╣рдо рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рд╣рдо C # рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдХреЛ рд╡рд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рджреЛрдиреЛрдВ рдЬрдЧрд╣ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдЬрд╡рд╛рдм NoJS рд╣реИ, рд╣рдо рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдкрд░реАрдХреНрд╖рдг
рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдЯрд╛рдЗрдорд▓рд╛рдЗрдбреНрд╕ рд╣реИрдВ рдЬреЛ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВред рдЬреЛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ рд╡реЗ Moq рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рдирдХрд▓реА рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХреБрдЫ рд╡рд░реНрдЧ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рд╡рд╣рд╛рдБ moq рд╣реИ, рдпрд╣ рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣реИред рдЖрдк рдкреЗрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдкрд░реНрдЪреА рдХрд░реЗрдВредMoq рдореЗрдВ рдпреЗ рд▓рдВрдмреЛрджрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рднреА рд╣реИрдВ, рдбреЗрд▓рд┐рдЧреЗрдЯреНрд╕ рдирд╣реАрдВред рд╡рд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкреЗрдбрд╝реЛрдВ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреИрд╕рд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдРрд╕рд╛ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдПрдХ рджреЛрд╕реНрдд рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдХреЛрд░ рдореЗрдВ WCF рдЬреИрд╕рд╛ рдХреБрдЫ рдерд╛ред рдореИрдВрдиреЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдХрд┐ рдПрдХ рд╡реЗрдмрдПрдкреАрдЖрдИ рд╣реИред рд╡рд╣ WebAPI рдореЗрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП WSDL рдкрд░ WCF рдореЗрдВ рдерд╛ред WebAPI рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрд╡реИрдЧрд░ рд╣реИред рд▓реЗрдХрд┐рди рд╕реНрд╡реИрдЧрд░ рд╕рд┐рд░реНрдл рдЯреЗрдХреНрд╕реНрдЯ рд╣реИ, рдФрд░ рдПрдХ рдорд┐рддреНрд░ рд╣рд░ рдмрд╛рд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдХрдм рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдЯреВрдЯрддрд╛ рд╣реИред рдЬрдм рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рдерд╛, рддреЛ рдЙрд╕рдиреЗ рдбрдмреНрд▓реНрдпреВрдПрд╕рдбреАрдПрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛, рдЕрдЧрд░ рдПрдкреАрдЖрдИ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдмрджрд▓ рдЧрдИ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рди рдЯреВрдЯ рдЧрдпрд╛редрдпрд╣ рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдЪреНрдЫреБрдХ рд╣реИ, рдФрд░ рд╕рдВрдХрд▓рдХ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред Moq рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЖрдк рдЕрдкрдиреЗ ProductController рдХреЗ рд╕рд╛рде GetResponse <> () рд╡рд┐рдзрд┐ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рдВрдмреЛрджрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рдХ рджреНрд╡рд╛рд░рд╛ рдорд╛рдирдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЬрдм рдЖрдк рд▓реИрдореНрдмреНрдбрд╛ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Ctrl + Space рджрдмрд╛рдПрдВ рдФрд░ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛ, рдХреЛрдб рдХреЗ рд╕рд╛рде dll рд╣реЛред Intellisense рд╣реИ, рдпрд╣ рд╕рдм рд▓рд┐рдЦреЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдмреБрд▓рд╛ рд░рд╣реЗ рд╣реИрдВредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Moq рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╕ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЯреНрд░реА рдмрдирд╛рдПрдВ, рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВ, рдПрдкреАрдЖрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рд╕рднреА рд░реВрдЯрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЦреАрдВрдЪреЗрдВред рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо рдмрд╕ POST рдпрд╛ GET рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ Intellisense рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреЗрдбрд╝ рд╣рдо рд╕рднреА рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рд╣рдо рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рд╡реЗрдм-рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВредрдкрд░рд╛рд╡рд░реНрддрди рдЕрдиреБрдХреВрд▓рдирдореЗрдЯрд╛-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд░рд╛рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХреБрдЫ рд╣реИред
рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдзреАрдорд╛ рд╣реИ, рдореИрдВ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрд╣рд╛рдВ, рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдЪреНрдЫреЗ рдорд╛рдорд▓реЗ рднреА рд╣реИрдВред рдкрд╣рд▓рд╛ CreateInstance рдПрдХреНрдЯрд┐рд╡реЗрдЯрд░ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди.рдиреНрдпреВ () рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдмрд╕ рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдореЗрдВ рдбреНрд░рд╛рдЗрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдЗрд╕ рд╕реНрд▓рд╛рдЗрдб рдХреЛ рдПрдХ рдЕрджреНрднреБрдд рд╡рдХреНрддрд╛ рдФрд░ рд╕рдВрдЧреАрддрдХрд╛рд░ рд╡рд╛рдЧреАрдл рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдерд╛ред рд╡рд╣ рдПрдХ рдмреНрд▓реЙрдЧ рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдпрд╣рд╛рдБ рдПрдХреНрдЯреАрд╡реЗрдЯрд░ рд╣реИ, рдпрд╣ рдкреАрдХ рдСрдлрд╝ рдХрдореНрдпреБрдирд┐рдЬрд╝реНрдо рд╣реИ; рдЖрдк рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╣ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХрд┐рддрдиреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред Constructor_Invoke, рдпрд╣ рд▓рдЧрднрдЧ рдЖрдзрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдФрд░ рдмрд╛рдИрдВ рдУрд░ рдирдпрд╛ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рд▓рдВрдмреЛрджрд░ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдереЛрдбрд╝реА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИ, рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╕рдВрдж рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред
рдпрд╣реА рдХрд╛рдо рдЧреЗрдЯрд░реНрд╕ рдпрд╛ рд╕реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
. - Fast Memember Fast Reflect, , . , , - . , , .

, , , . , , . , , - , , , , DSL, Little Languages -, .
рдпреЗ рд╕рднреА рдПрдХ рд╣реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрдм рдХреБрдЫ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╣рдо рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд▓реЗрдХрд░ рдЖрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЖрд╡реЗрджрди рдХреЗ рдЕрдВрджрд░ рд╣рдо рдПрдХ рдФрд░ рд╕рдВрдХрд▓рдХ рдпрд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ DLR рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЬреЛ рдЖрдпрд░рдирдкрд╛рдЗрдерди, рдЖрдпрд░рдирд░реБрдмреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреЗрдбрд╝ CLR рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реНрдпрд╛рдкрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЛрд╖реНрдардХ рдХреЗ рдмрд╛рд╣рд░ рд╣реА рд╣реИредрдкрд░рд┐рдгрд╛рдо
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рд╣рдо рдХреМрди рд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╣реБрдЖред рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рд▓рд┐рдЦрд╛ рдерд╛, рд╣рдо рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░, рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛редрдкрд╣рд▓рд╛ рдкреНрд▓рд╕ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ, рдкреЗрдЬрд┐рдиреЗрд╢рди рдФрд░ рдЙрд╕ рд╕рдм рдХреЗ рд╕рд╛рде 100 рд╣рдЬрд╛рд░ рдирдП рд╕рд╛рдБрдЪреЗ рд╣реИрдВред рдореЛрдЬрд╛рд░реНрдЯ рдХрд╛ рдПрдХ рдордЬрд╛рдХ рдерд╛ рдХрд┐ рдкрд╛рд╕рд╛, рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдФрд░ рдПрдХ рдЧреНрд▓рд╛рд╕ рд░реЗрдб рд╡рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрд┐рд╕реА рднреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡реЙрд▓реНрдЯреЗрдЬ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЯреНрд░реАрдЬрд╝ рдХреА рдорджрдж рд╕реЗ, рдереЛрдбрд╝рд╛ рдореЗрдЯрд╛-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдЖрдк рдХрд┐рд╕реА рднреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдлреЙрд░реНрдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВредрдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдЪреВрдВрдХрд┐ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрдВредрд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╣рдо рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдФрд░ рдХрдо рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдХрдо рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреА рдХреЛрдИ рдЧреБрдВрдЬрд╛рдЗрд╢ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реЗрдгреА рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВредрджреВрд╕рд░реА рдУрд░, рд╣рдо рдбрд┐рдЬрд╛рдЗрдирд░ рдХреА рдпреЛрдЧреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдкреНрд░рддрд┐рдмрд┐рдВрдм, рдЙрдирдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╡рд╛рд▓ рдЖрддреЗ рд╣реИрдВ, рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкреИрд░ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реА рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдПрдкреАрдЖрдИ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╡реНрдпрдХреНрддрд┐ рддреБрд░рдВрдд рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдПрдЧрд╛ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рд┐рд░реНрдл рдЧрдардмрдВрдзрди рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдбрд┐рдЬрд╛рдЗрдирд░ рдХреВрд▓рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, Expression.Compile () рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдХреИрд╢рд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореЗрд░реА рдПрдХ рд╕реАрдорд╛ рдереА рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╕реНрдерд┐рд░ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЧреИрд░-рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреИрд╢ рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА, рдФрд░ рд╣рдореЗрдВ рд░реИрдВрдбрдо рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрдВрдкрд╛рдЗрд▓ () рдореЗрдВ рдХреЙрд▓ рдорд┐рд▓реЗрдВрдЧреЗред рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЬреЛ рдореИрдВ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛редтАФ C#-, , , Where(), - implicit- . MSDN, . , , , , , , StackOverflow , - .
, , . , , ,
. , тАФ .
22-23 DotNext 2018 Moscow . , ( ).