IEnumerable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ IEnumerable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИред

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

рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ



рдпрд╣рд╛рдВ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ - рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХреЛрдб, рдХреЗрд╡рд▓ рдирд╛рдо рдмрджрд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

private IEnumerable<Account> GetAccountsByOrder(IEnumerable<Account> accounts, IEnumerable<OrderItem> orderItems) { var orderItemsWithQuotaOwners = _restsProvider.GetQuotaOwner(orderItems); return accounts.Where( q => orderItemsWithSourceQuotaOwners.Any(s => s.QuotaOwner == q.QuotaOwner && ... )); } 


рдпрд╣ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдЬрдЯрд┐рд▓ рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рдкрд░реЗрд╢рд╛рдиреА рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реИред рдпрд╣ рд╕рдм GetQuotaOwner рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрдВрджрд░, LINQ to SQL рдХреНрд╡реЗрд░реА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ LINQ рдкрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ IEnumerable рдХреЛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, quotedAccounts рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ GetQuotaOwner рд╡рд┐рдзрд┐ рдЗрдВрдЯрд░реНрдирд▓реНрд╕ рдХрд╛ рдПрдХ рдирдпрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдорд┐рд▓рддрд╛ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рд┐рд╕рд░реНрдкрд░ рдиреЗ рд╣рдореЗрдВ рдЦрддрд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреАред

рдпрд╣ рдПрдХ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдпрд╣рд╛рдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 class Foo { public string Value; } class Bar { public string Value; public int ACount; } static void Main() { Foo[] foo = new[] { new Foo { Value = "Abba" }, new Foo { Value = "Deep Purple" }, new Foo { Value = "Metallica" } }; var bar = foo.Select(x => new Bar { Value = x.Value, ACount = x.Value.Count(c => c == 'a' || c == 'A') }); Censure(bar); foreach (var one in bar) { Console.WriteLine(one.Value); } } private static void Censure(IEnumerable<Bar> bar) { foreach (var one in bar) { if (one.ACount > 1) { one.Value = "<censored>"; } } } 


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

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╣рдо рджреЛ рдмрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрдЧреНрд░рд╣ рдорд┐рд▓рддреЗ рд╣реИрдВред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рдЗрди рджреЛ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдмрд╕ ToArray рдЬреЛрдбрд╝реЗрдВред рд╕рд╡рд╛рд▓ рдЕрд▓рдЧ рд╣реИ - рд╣рдордиреЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд┐рдпрд╛ рдФрд░ IEnumerable рдХреЗ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдХреНрдпрд╛ рд╕рд╛рд░ IEnumerable


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, IEnumerable рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕рдордЭреЗрдВред рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреБрдЫ рднреА рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ: рдЪрд╛рд╣реЗ рд╡рд╣ рдкрд░рд┐рдорд┐рдд рд╣реЛ рдпрд╛ рдЕрдирдВрдд, рдЗрд╕ рдкрд░ рдкрд░рд┐рдЪрд╛рд▓рди рдХреА рд▓рд╛рдЧрдд рдХреНрдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ - var lines = File.ReadLines ("data.txt");

рдЕрдм рд╣рдо рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рд░рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рджреЛ рдмрд╛рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдорд╛рд╕реВрдо рдХреЛрдб рдХрд╛ рдорддрд▓рдм рд╣реИ

  var lines = File.ReadLines("data.txt"); string lastLine = lines.ElementAt(lines.Count()); 


рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд░реНрдЬрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдФрд░ рднреА рдмреБрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 class RandomStrings : IEnumerable<int> { Random _rnd = new Random(); public IEnumerator<int> GetEnumerator() { while (true) yield return _rnd.Next(); } } 


рдЕрдм рдПрдХ рднреА рдирд┐рд░реНрджреЛрд╖ рдЧрдгрдирд╛ () рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЛ рд▓рдЯрдХрд╛ рджреЗрддреА рд╣реИред

рдПрдХ рд╕рд░рд▓ рдирд┐рд╖реНрдХрд░реНрд╖ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: IEnumerable рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдпрд╣ рдорд╛рдирдХрд░ рдХрд┐ рдпрд╣ рдЕрдВрджрд░ рдмреИрдарддрд╛ рд╣реИред

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

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

рдпрд╣реА рд╣реИ, рд╣рдо рддреБрд░рдВрдд рдХрд╣рддреЗ рд╣реИрдВ - рдПрдХ рдкрд░рд┐рдорд┐рдд рдЕрдиреБрдХреНрд░рдо рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ рд╣реИ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдорддрд▓рдм рд╣реИ рддреЛ рд╣рдо IEnumerable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?

рдпрд╣рд╛рдБ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдпреЛрдЧреНрдп рдкрд╛рдардХ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ - рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рд╕рдВрдЧреНрд░рд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ - рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рднреА рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдФрд░ рдКрдкрд░ рдХреА рд╢реИрд▓реА рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рднреА рдЖрдо рддреМрд░ рдкрд░ рдмреЗрд╣рдж рдЕрдХреНрд╖рдо рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ IEnumerable рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдХрд╛рдо рдХреА рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ (.NET рд╕реВрдЪреА рдореЗрдВ, рдЕрдм рд╕реЗ рдореИрдВ рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдПрдХ рд╢реАрдЯ рдХрд╣реВрдВрдЧрд╛) рдпрд╛ рдПрдХ рд╕рд░рдгреАред

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

рд╡рд╛рдкрд╕реА рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ - IEnumerable рд▓реМрдЯрддреЗ рд╣реБрдП, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рд╢реАрдЯ рдХреЗ рд╕рд╛рдеред

LINQ


рдЖрдИрдИрдПрди рдореЗрдВ рд╕реНрдерд┐рддрд┐ IEnumerable рдХреЗ рдкреНрд░рднреБрддреНрд╡ рдХреЗ рд╕рд╛рде LINQ рдХреА рд╢реБрд░реВрдЖрдд рдХреЗ рд╕рд╛рде рдмрдврд╝реАред рдпрджрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрд╡реЗрджрди рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬреАрд╡рди рдореЗрдВ рдХреБрдЫ рдмрд╛рд░ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛, рдЕрдм рдХреЛрдИ LINQ рдЕрдиреБрд░реЛрдз IEnumerable рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдРрд╕реЗ IEnumerable рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдЖрдк рдПрдХ рдЪрд░рдо рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рддреБрд░рдВрдд рдПрдХ рд╕рд░рдгреА рдпрд╛ рд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдпрд╣ рдкреБрди: рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд░рдгрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рддрдм рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

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

рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ICollection рд╕рдмрд╕реЗ рд╕рдлрд▓ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред IEnumerable рдХреА рддреБрд▓рдирд╛ рдореЗрдВ ICollection рдХреЗ рдПрдХ рдордирдорд╛рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рд╣реИред

рдЖрдк IList рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди IEnumerable рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЛрдг рд╣реИ - рдпрд╣ рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ 95% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рд╕реНрд╡рдпрдВ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред

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

рдПрдХ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛ ReadOnlyCollection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рддреБрд░рдВрдд рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЧрд▓рдд рдирд╛рдо рд╣реИред рдЗрд╕рдХреЗ рдПрдХрдорд╛рддреНрд░ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ ReadOnlyCollection (IList рд╕реВрдЪреА) рд╣реИред рдпрд╛рдиреА рдЗрд╕реЗ ReadOnlyList рдХрд╣рдирд╛ рдЬреНрдпрд╛рджрд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╣рд░ рдЬрдЧрд╣ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
 public ReadOnlyCollection<T> ToReadOnly(this IEnumerable<T> data) 
рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЦреИрд░, рд░реВрдкрд░реЗрдЦрд╛ 4.5 рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИ: рдпрд╣ IReadOnlyCollection рдФрд░ IReadOnlyList рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реВрдЪреА рдЗрд░рд┐рдбреЛрдиреЗрд▓реАрд▓рд┐рд╕реНрдЯ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ

 IReadOnlyList<Foo> Do(IReadOnlyList<Bar> bar) { return bar.Where(x => IsGood(x)).ToList(); } 


рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ IEnumerable рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдЕрдиреБрдмрдВрдзрд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред

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

рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд░рдгрд┐рдпреЛрдВ, ReadOnlyCollection рд╡рд░реНрдЧ рдФрд░ IReadOnlyList рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ
рдЗрд╕реА рд╡рд┐рд╖рдп рдкрд░ рд╣реИрдмрд░ рдкрд░ рдПрдХ рдФрд░ рд▓реЗрдЦ рд╣реИ ред

Source: https://habr.com/ru/post/In193774/


All Articles