7 рдЦрддрд░рдирд╛рдХ рдЧрд▓рддрд┐рдпрд╛рдБ рдЬреЛ C # / NET рдореЗрдВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ

"C # ASP.NET рдХреЛрд░ рдбреЗрд╡рд▓рдкрд░" рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред




C # рдПрдХ рдмреЗрд╣рддрд░реАрди рднрд╛рд╖рд╛ рд╣реИ , рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред C # рдореЗрдВ рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдХрд╕рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд▓рд╕, рдЗрд╕рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдбрд┐рдЬрд╛рдЗрди рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рдХреБрдЫ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддреА рд╣реИ (рдЬрд╣рд╛рдВ рд╕рдЪ рдЭреВрда рд╣реИ )ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдХрд╛ рдЕрдкрдирд╛ рд░реЗрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рднрд╛рд╖рд╛ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЪрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

1. рд╡рд┐рд▓рдВрдмрд┐рдд (рдЖрд▓рд╕реА) рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рди рд╕рдордЭреЗрдВ


рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ .NET рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рдЬрд╛рдирдХрд╛рд░ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ IEnumerable<T>рдФрд░ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ yieldрд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ / рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдХреЛрдб рдХреА рд▓рд╛рдЗрди рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдХрд╣рддреЗ рд╣реИрдВ - рд╡реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдВрдЧреНрд░рд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ *ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдмрд╕реЗ LINQ рднрд╛рд╡ рдЕрдВрддрддрдГ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдЙрдкрдЬ ред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЧрдВрднреАрд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void Ensure_Null_Exception_Is_Thrown()
{
   var result = RepeatString5Times(null);
}
[TestMethod]
[ExpectedException(typeof(InvalidOperationException))]
public void Ensure_Invalid_Operation_Exception_Is_Thrown()
{
   var result = RepeatString5Times("test");
   var firstItem = result.First();
}
private IEnumerable<string> RepeatString5Times(string toRepeat)
{
   if (toRepeat == null)
       throw new ArgumentNullException(nameof(toRepeat));
   for (int i = 0; i < 5; i++)
   {   
       if (i == 3)
            throw new InvalidOperationException("3 is a horrible number");
       yield return $"{toRepeat} - {i}";
   }
}

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

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

2. , Dictionary ,


рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдкреНрд░рд┐рдп рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдб рд╣реИ рдЬреЛ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдк рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рддреЗ List<T>рд╣реИрдВ, рддреЛ рд╡реЗ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗред рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдФрд░ рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдПрдХ рдРрд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ Dictionary<TKey,TValue>рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

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

рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:

рддреАрд╕рд░рд╛
рджреВрд╕рд░рд╛


var dict = new Dictionary<string, object>();       
dict.Add("first", new object());
dict.Add("second", new object());
dict.Remove("first");
dict.Add("third", new object());
foreach (var entry in dict)
{
    Console.WriteLine(entry.Key);
}

рдореБрдЭрдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рди рдХрд░реЗрдВ? рдСрдирд▓рд╛рдЗрди рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ ред

3. рдлреНрд▓реЛ рд╕реЗрдлреНрдЯреА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рди рд░рдЦреЗрдВ


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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХреЗ рдЗрд╕ рдмреНрд▓реЙрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рд╕рд░рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ List<T>ред

var items = new List<int>();
var tasks = new List<Task>();
for (int i = 0; i < 5; i++)
{
   tasks.Add(Task.Run(() => {
       for (int k = 0; k < 10000; k++)
       {
           items.Add(i);
       }
   }));
}
Task.WaitAll(tasks.ToArray());
Console.WriteLine(items.Count);

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ 10,000 рд╕реЗ рд╕реВрдЪреА рдореЗрдВ 0 рд╕реЗ 4 рддрдХ рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрддрдГ 50,000 рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП ред рдХреНрдпрд╛ рдореИрдВ? рдареАрдХ рд╣реИ, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдпрд╣ рд╣реЛрдЧрд╛ - рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рдореЗрд░реЗ 5 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реБрд░реБрдЖрдд рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:

28191
23536
44346
40007
40476

рдЖрдк рдЗрд╕реЗ рдЦреБрдж рдСрдирд▓рд╛рдЗрди рдпрд╣рд╛рдВ рдЪреЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

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

4. LINQ рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рдЖрд▓рд╕реА (рд╕реНрдердЧрд┐рдд)


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



рдЬрдм рдореИрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдПрдВрдЯрд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣рд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд▓реМрдЯрд╛рдП рдЬреЛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ! рдЗрд╕рд▓рд┐рдП, рд╡рд╣ рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реИ рдЬрдм рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб 2 рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ - рдПрдХ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП),

using (var db = new DBEntities())
{
   var modules = db.Modules;
   foreach (var module in modules)
   {
       var moduleType = module.Results;
      //   
   }
}

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

using (var db = new DBEntities())
{
   var modules = db.Modules.Include(b => b.Results);
   foreach (var module in modules)
   {
       var moduleType = module.Results;
      //   
   }
}

5. рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ LINQ to SQL / Entity Frameworks рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ


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

рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреАред

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

var modules = from m in db.Modules
              select m.Name.Split(':')[1];

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

рдЬреЛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

рдиреАрдЪреЗ LINQ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓реЗрдВ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рдЕрдиреБрд░реЛрдз рд╣реИ)ред

int modules = db.Modules.Sum(a => a.ID);

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрдкрдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдпреЛрдЧ рджреЗрдЧрд╛ред рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ! рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп LINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ? рд╣рдо рдЕрдкрдиреЗ рдпреЛрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

int modules = db.Modules.ToList().Sum(a => a.ID);

рд╢реЙрдХ, рд╣реЙрд░рд░ - рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдХрд░реЗрдЧрд╛! рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЙрдбреНрдпреВрд▓ рдЯреЗрдмрд▓ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдирд╣реАрдВ рдереАрдВ? LINQ to рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ 0, рдФрд░ Entity рдлреНрд░реЗрдорд╡рд░реНрдХ / LINQ to SQL рд╡рд░реНрдЬрди рдПрдХ InvalidOperationException рдлреЗрдВрдХрддрд╛ рд╣реИ , рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "int?" рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ "рдЗрдВрдЯ" рдореЗрдВ ... рдРрд╕реЗред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдЦрд╛рд▓реА рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдПрд╕рдпреВрдПрдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ NULL рдХреЛ 0 рдХреЗ рдмрдЬрд╛рдп рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдПрдХ рдЕрд╢рдХреНрдд int рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рджрд┐рдП рдЧрдП рд╣реИрдВ ред

рдЬрд╛рдирд┐рдП рдЬрдм рдЖрдкрдХреЛ рд╕рд┐рд░реНрдл рдЕрдЪреНрдЫреА рдкреБрд░рд╛рдиреА SQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрддреНрдкрдиреНрди рдПрд╕рдХреНрдпреВрдПрд▓ рдкрд░ рд╕реАрдзрд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред рдпрд╛ рддреЛ рдЗрд╕реЗ SQL рдореЗрдВ рдХрд░реЗрдВ, рдпрд╛ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ рдХреЛ рд╕реМрдВрдкреЗрдВ, рдЕрдЧрд░ рдЖрдкрдХреЗ рдпрд╛ рдЖрдкрдХреА рдХрдВрдкрдиреА рдореЗрдВ рдПрдХ рд╣реИ!

6. рдЧрд▓рдд рджреМрд░


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

.NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд░рд╛рдЙрдВрдб рдирд╛рдордХ рдЧрдгрд┐рдд рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ , рдЬреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рди рдкрд░ рдЧреЛрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░реЗрдВ рдЬрдм рдЖрдк рдкрд╣рд▓реЗ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рди рдкрд░ 2.25 рдХреЗ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ 2.3 рд╕реЗ рдЧреЛрд▓ рд╣реЛ рдЬрд╛рдП - рдпрд╣реА рд╣рдо рд╕рдм рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЦреИрд░, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ .NET рдмреИрдВрдХрд░ рд░рд╛рдЙрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИрдЬреЛ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЧреЛрд▓ рдХрд░рддрд╛ рд╣реИ 2.2! рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдмреИрдВрдХрд░реНрд╕ рдирд┐рдХрдЯрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреЛрд▓ рд╣реИрдВ рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ "рдордзреНрдп рдмрд┐рдВрджреБ" рдкрд░ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ Math.Round рдкрджреНрдзрддрд┐ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Math.Round(2.25,1, MidpointRounding.AwayFromZero)

7. рднрдпрд╛рдирдХ рд╡рд░реНрдЧ 'DBNull'


рдпрд╣ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рд┐рдп рдпрд╛рджреЗрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - ORM рдЗрд╕ рдЧрдВрджрдЧреА рдХреЛ рд╣рдорд╕реЗ рдЫрд┐рдкрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдирдЧреНрди ADO.NET (SqlDataReader рдФрд░ рдЗрд╕ рддрд░рд╣) рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк DBNull.Value рд╕реЗ рдорд┐рд▓реЗрдВрдЧреЗред

рдореИрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдпрдХреАрди рд╣реИ рдХрд┐ рдХрд╛рд░рдг рдХреЗ 100% рдХреНрдпреЛрдВрдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреВрд░реНрдг рдорд╛рди рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ!), рд▓реЗрдХрд┐рди Microsoft рдиреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ DBNull (рдПрдХ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде) рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдореИрдВ рдЗрд╕рдХрд╛ рдПрдХ рд▓рд╛рдн рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ - рдбреЗрдЯрд╛рдмреЗрд╕ рдлреАрд▓реНрдб рдЬреЛ рдХрд┐ NULL рд╣реИ, рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдХреЛрдИ рдЕрдкреНрд░рд┐рдп NullReferenceException рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ NULL рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рджреНрд╡рд┐рддреАрдпрдХ рддрд░реАрдХреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдХрд┐ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЖрдк C # рдХреА рдХрд┐рд╕реА рднреА рдорд╣рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЕрд╢рдХреНрдд рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

reader.GetString(0) ?? "NULL";

рдЖрдЦрд┐рд░рдХрд╛рд░ рдХреНрдпрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ...

reader.GetString(0) != DBNull.Value ? reader.GetString(0) : "NULL";

рдУрд╣ред

рдзреНрдпрд╛рди рджреЗрдВ


рдпреЗ рдХреБрдЫ рдЧреИрд░-рддреБрдЪреНрдЫ "рд░реЗрдХ" рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдореИрдВрдиреЗ .NET рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ - рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрд╕реЗ рдиреАрдЪреЗ рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред



ASP.NET Core:



All Articles