<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnet.lv/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Andrejs Mamontovs : .NET3.5 SP 1, CSharp, .NET3.5, Linq</title><link>http://dotnet.lv/blogs/am/archive/tags/.NET3.5+SP+1/CSharp/.NET3.5/Linq/default.aspx</link><description>Tagi: .NET3.5 SP 1, CSharp, .NET3.5, Linq</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Izstrādātāja ikdienas, klasiskā uzdevuma atrisinājums ar LINQ iespējām</title><link>http://dotnet.lv/blogs/am/archive/2009/04/01/izstr-d-t-ja-ikdienas-klasisk-uzdevuma-atrisin-jums-ar-linq-iesp-j-m.aspx</link><pubDate>Wed, 01 Apr 2009 10:33:02 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:2916</guid><dc:creator>andrejs.mamontovs</dc:creator><slash:comments>38</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/am/rsscomments.aspx?PostID=2916</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/am/commentapi.aspx?PostID=2916</wfw:comment><comments>http://dotnet.lv/blogs/am/archive/2009/04/01/izstr-d-t-ja-ikdienas-klasisk-uzdevuma-atrisin-jums-ar-linq-iesp-j-m.aspx#comments</comments><description>&lt;p&gt;&lt;font size="3" face="ca"&gt;Sveicināti,&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="ca"&gt;Jau kādu brīdi izmantoju LINQ veicot datu atlasi, grupēšanu, kārtošanu un tam līdzīgas lietas. Šoreiz gribēju apskatīt vienu klasisko uzdevuma atrisinājumu izmantojot LINQ iespējas.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="ca"&gt;Tātad, man ir noteikts importa fails. Parasts teksta fails, kurš sastāv no rindām, rindu saturs tiek dalīts ar sadalītāju(manā gadījumā – Tab). Pieņemsim, ka mums nav svarīgs datu ielasīšanas process, bet gan rindu apstrāde.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="ca"&gt;Piemērs, &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;&lt;font size="3" face="ca"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;var &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;lines &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;= &lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;new&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[]{ &lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Andrejs Mamontovs\t28\tmale&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Ivars Āriņš\t25\tmale&amp;quot; &lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;};&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;pre class="code"&gt;&lt;font size="3" face="ca"&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Atmiņā ir ielasīti divi ieraksti.&amp;#160; Pagrūti saprast, ko tad šīs rindiņas satur. Sāksim ar atšifrējumu. Katra rinda sadalīta uz trim daļām (Vārds Uzvārds, vecums, dzimums). Tātad, rindiņa ir jādala.&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font size="3" face="ca"&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;foreach &lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;var &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;line &lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;in &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;lines&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;)
{
&lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;&lt;font color="#a79a86"&gt;    &lt;/font&gt;var &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;= &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;line&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Split&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;#39;\t&amp;#39;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;&lt;font size="3" face="ca"&gt;);
}
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Vērtība ar indeksu nulle būs Vārds Uzvārds. Vērtība ar indeksu viens būs vecums. Vērtība ar indeksu divi būs dzimums.&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font size="3" face="ca"&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Vārds Uzvārds: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[&lt;/span&gt;&lt;span style="background:#10100d;color:cyan;"&gt;0&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);
&lt;/span&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Vecums: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[&lt;/span&gt;&lt;span style="background:#10100d;color:cyan;"&gt;1&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);
&lt;/span&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Dzimums: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[&lt;/span&gt;&lt;span style="background:#10100d;color:cyan;"&gt;2&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Iespējams šis ir pats izplatītākais veids, kā praksē tiek apstrādāti dati, bet man tāds nepatīk. Uzturēšanas ziņā neērti. Es vēlos izveidot noteiktu struktūru, ar atšifrējumu kas ir kas. &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Pirmkārt, izveidoju&amp;#160; pārskaitījumu ar lauku nosaukumu.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font size="3" face="ca"&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;public enum &lt;/span&gt;&lt;/font&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;&lt;font size="3" face="ca"&gt;LineTags
&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;{
&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;&lt;font color="#a79a86"&gt;    &lt;/font&gt;FullName&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;,
&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;&lt;font color="#a79a86"&gt;    &lt;/font&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;&lt;font size="3" face="ca"&gt;,
&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;    Gender
&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;}&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Lauku apstrādes kodu var tagad pārrakstīt, lai tiek izmantots pārskaitījums&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Vārds Uzvārds: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[(&lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;int&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;)&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;LineTags&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;FullName&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);
&lt;/span&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Vecums: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[(&lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;int&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;)&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;LineTags&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);
&lt;/span&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Dzimums: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[(&lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;int&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;)&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;LineTags&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Gender&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Šinī gadījumā esam atteikušies no indeksiem, bet nav vel ideāli, ir nepieciešams pārskaitījumu tipu pārveidot uz tipu Integer. Šeit būtu pareizi izmantot Generic iespējas, lai simbolu kopas meklēšana notiktu pēc LineTags pārskaitījuma. Un šeit var noderēt LINQ konstrukcijas.&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;var &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;= &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;line&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Split&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;#39;\t&amp;#39;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;)&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Select&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(
    (&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;s&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;index&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;) &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;new &lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;{ &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Tag &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;= &lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;LineTags&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;)&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;index&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Substring &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;= &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;s &lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;})&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;ToDictionary&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(
&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;&lt;font color="#a79a86"&gt;    &lt;/font&gt;c &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;c&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Tag&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;c &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;c&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Substring&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;&lt;font size="3" face="ca"&gt;);
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Vispirms ar Split sadalām rindu uz sastāvdaļām. Ar metodi Select visi masīva elementi (String&amp;#160; tips) tiek pārveidoti anonīmajā tipā. Tips satur divus laukus (Tag un Substring). Tag lauks tiek aizpildīts ar ieraksta indeksu. Ieraksta indekss ir Integer tips, to varam bez problēmām pārveidot par LineTags tipu. Substring lauks tiek aizpildīts ar oriģinālo simbolu kopu. Pēc šīs pārveidošanas iegūstam sarakstu ar jauno tipu. Noslēgumā jauno sarakstu pārveidot par vārdnīcu, kurā kā indeksi tiek izmantots tips LineTags. &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Modificējam datu iegūšanas kodu&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Vārds Uzvārds: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;LineTags&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;FullName&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);
&lt;/span&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Vecums: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;LineTags&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Age&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="ca"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;]);
&lt;/span&gt;&lt;span style="background:#10100d;color:#009b00;"&gt;Console&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;WriteLine&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;Dzimums: {0}&amp;quot;&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;, &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;parts&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;[&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;LineTags&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Gender&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;&lt;font size="3" face="ca"&gt;]);
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font size="3" face="ca"&gt;Kā redzam tikām vaļā no tipa pārveidošanas uz Integer. Kā arī tagad mums ir grūtāk kļūdīties atlasot datus. Šāds paņemies protams nebūt nav tas ātrākais, starpība ir aptuveni 5.5x reizes. Ir testēts uz aptuveni 100000 ierakstu.&amp;#160; Ja parastā apstrāde aizņēma ~100ms, tad gadījumā ar LINQ bija ~600ms. Protams, ir jāskatās pēc situācijas. Bet noteikti šis gadījums ir spējīgs dzīvot.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3"&gt;Cerams ka noderēs!&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font size="3"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=2916" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/am/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Collections/default.aspx">Collections</category><category domain="http://dotnet.lv/blogs/am/archive/tags/OOP/default.aspx">OOP</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Patterns/default.aspx">Patterns</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Arhitekt_6B01_ra/default.aspx">Arhitektūra</category><category domain="http://dotnet.lv/blogs/am/archive/tags/.NET3.5/default.aspx">.NET3.5</category><category domain="http://dotnet.lv/blogs/am/archive/tags/.NET3.5+SP+1/default.aspx">.NET3.5 SP 1</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Linq/default.aspx">Linq</category></item><item><title>Code complete (Izstrādātāja ikdiena).</title><link>http://dotnet.lv/blogs/am/archive/2008/11/04/code-complete-izstr-d-t-ja-ikdiena.aspx</link><pubDate>Tue, 04 Nov 2008 21:12:16 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:1943</guid><dc:creator>andrejs.mamontovs</dc:creator><slash:comments>16</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/am/rsscomments.aspx?PostID=1943</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/am/commentapi.aspx?PostID=1943</wfw:comment><comments>http://dotnet.lv/blogs/am/archive/2008/11/04/code-complete-izstr-d-t-ja-ikdiena.aspx#comments</comments><description>&lt;p&gt;&lt;font face="cali" size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;Labdien,&lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;Apmulsu ar kādiem tempiem sāk pildīties mūsu zināšanas bāze. Nav vēlmes palikt malā:)&lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;Tiecoties uz perfektu kodu, šoreiz par vienu interesantu vadlīniju. Reāls uzdevums no dzīves. &lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;· Tiek padota simbolu kopa (String)&lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;· Jāpārbauda vai simbolu kopa satur tikai burtus.&lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;Prātā nāk vismaz divas realizācijas. &lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;· Izmantot regulārās izteiksmes. Ja tās jūs pārzināt, tas neaizņems daudz laika. Bet kods ir jāraksta, pastāv arī kļūdas iespēja;&lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;· Uzrakstīt ciklu. Apskatam katru simbolu uz atbilstību atļautiem simboliem. Šinī gadījumā visticamāk jūsu kods būs jāatkļūdo un jāuztur;&lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;Bet vai pastāv arī alternatīvāki varianti, ar domu maksimāli koncentrētos uz pārbaudes nosacījuma! Šeit var palīdzēt jaunā &lt;i&gt;All&lt;/i&gt; paplašinošā metode &lt;i&gt;System.Linq&lt;/i&gt; vardu telpā. Kas ir domāta objektiem, kas manto &lt;i&gt;IEnumerable&lt;/i&gt; interfeisu. &lt;/font&gt; &lt;p&gt;&lt;font face="cali" size="3"&gt;Tātad varam uzrakstīs šādu te kodu, tas atbilst mūsu uzdevumam. Kods ir maksimāli īss, un šeit ir pavisam niecīga iespēja kļūdīties.&lt;/font&gt;&lt;pre class="code"&gt;&lt;font face="cali"&gt;&lt;font size="3"&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;using &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;System&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;Linq&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;&lt;font face="cali"&gt;&lt;font size="3"&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;...
&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;var s &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;= &lt;/span&gt;&lt;span style="background:#10100d;color:#44b1e3;"&gt;&amp;quot;ABC&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="cali"&gt;&lt;font size="3"&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;;
&lt;/span&gt;&lt;span style="background:#10100d;color:#d6d694;"&gt;var &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;result &lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;= &lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;s&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;All&lt;/span&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;(&lt;/span&gt;&lt;span style="background:#10100d;color:#2b91af;"&gt;Char&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;.&lt;/span&gt;&lt;span style="background:#10100d;color:#e8e8e8;"&gt;IsLetter&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="background:#10100d;color:#a79a86;"&gt;&lt;font face="cali" size="3"&gt;);
&lt;/font&gt;&lt;/span&gt;&lt;span style="background:#10100d;color:#80ff00;"&gt;&lt;font face="cali" size="3"&gt;...
&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;font face="cali" size="3"&gt;Veicu veiktspējas testus, stipri neatpaliek no varianta, kad tiek rakstīts savs cikls, bet noteikti ir ātrāks par regulārām izteiksmēm.&lt;/font&gt;
&lt;p&gt;&lt;font face="cali" size="3"&gt;Cerams, noderēs.&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=1943" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/am/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Collections/default.aspx">Collections</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Generic/default.aspx">Generic</category><category domain="http://dotnet.lv/blogs/am/archive/tags/OOP/default.aspx">OOP</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Patterns/default.aspx">Patterns</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Arhitekt_6B01_ra/default.aspx">Arhitektūra</category><category domain="http://dotnet.lv/blogs/am/archive/tags/.NET3.5/default.aspx">.NET3.5</category><category domain="http://dotnet.lv/blogs/am/archive/tags/.NET3.5+SP+1/default.aspx">.NET3.5 SP 1</category><category domain="http://dotnet.lv/blogs/am/archive/tags/Linq/default.aspx">Linq</category></item></channel></rss>