<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Business Logic</title>
        <link>http://community.dotnetwork.it/sabrina/category/4.aspx</link>
        <description>Classi dedicate ad uso specifico per la risoluzione di algoritmi o problemi collegati alla logica di business</description>
        <language>it-IT</language>
        <copyright>Sabrina C.</copyright>
        <managingEditor>ziayeye@ziayeye.it</managingEditor>
        <generator>Subtext Version 1.9.5.176</generator>
        <item>
            <title>Lavorare con XML parte 2</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2010/11/01/lavorare-con-xml-parte-2.aspx</link>
            <description>&lt;h3&gt;Che cosa ci viene offerto gratuitamente dal sistema&lt;/h3&gt;
&lt;p&gt;Come ho già spiegato nel precedente post, .NET è molto XML friendly, pertanto ci offre una serie di funzionalità di base al riguardo senza che dobbiamo divertirci a fare le cose a manina. Pertanto ho costruito una classe fondamentalmente inutile che però ci dimostra come tutti i tipi di dati di base di .NET sono serializzabili.&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;
&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; DnwEnitities.Entities
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Serializzabile
    {

        &lt;span class="kwrd"&gt;public&lt;/span&gt; Serializzabile()
        {
            TheChar = &lt;span class="str"&gt;'A'&lt;/span&gt;;
            TheByte = 10;
            TheBool = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
            TheShort = 100;
            TheInt = 1000;
            TheLong = 1000000;
            TheFloat = 1234.7899f;
            TheDouble = 9800000.89600;
            TheDecimal = 766000000.654390001m;
            TheString = &lt;span class="str"&gt;"The string is very nice and useful."&lt;/span&gt;;
            TheDate = DateTime.Now;
            TheGuid = Guid.NewGuid();
            TheEnum = SerializableEnum.ALot;
        }
    
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt; TheChar
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt; TheByte
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; TheBool
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;short&lt;/span&gt; TheShort
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; TheInt
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;long&lt;/span&gt; TheLong
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;float&lt;/span&gt; TheFloat
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; TheDouble
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;decimal&lt;/span&gt; TheDecimal
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; TheString
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; DateTime TheDate
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; Guid TheGuid
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; SerializableEnum TheEnum
        {
            get;
            set;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Serializzabile ReadXml(&lt;span class="kwrd"&gt;string&lt;/span&gt; pSerializedData, &lt;span class="kwrd"&gt;bool&lt;/span&gt; pIsXmlData)
        {
            Serializzabile retP = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!pIsXmlData)
            {
                retP = (Serializzabile)SerializeHelper.DeserializeFromFile(&lt;br /&gt;                   &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Serializzabile), pSerializedData);
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt;
            {
                retP = (Serializzabile)SerializeHelper.DeserializeFromString(&lt;br /&gt;                   &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Serializzabile), pSerializedData);
            }
            &lt;span class="kwrd"&gt;return&lt;/span&gt; (retP);
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteXml(&lt;span class="kwrd"&gt;string&lt;/span&gt; pFileName)
        {
            SerializeHelper.SerializeToFile(pFileName, &lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(Serializzabile), &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty);
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; WriteXml()
        {
            &lt;span class="kwrd"&gt;return&lt;/span&gt; (SerializeHelper.SerializeToString(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="kwrd"&gt;false&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty));
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ToString()
        {
            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();
            sb.AppendFormat(&lt;span class="str"&gt;"Char: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheChar);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Byte: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheByte);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Bool: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheBool);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Short: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheShort);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Int: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheInt);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Long: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheLong);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Float: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheFloat);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Double: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheDouble);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Decimal: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheDecimal);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"String: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheString);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Date: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheDate);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Guid: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheGuid);
            sb.AppendLine();
            sb.AppendFormat(&lt;span class="str"&gt;"Enum: {0}"&lt;/span&gt;, &lt;span class="kwrd"&gt;this&lt;/span&gt;.TheEnum);
            sb.AppendLine();
            &lt;span class="kwrd"&gt;return&lt;/span&gt; (sb.ToString());
        }

    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;enum&lt;/span&gt; SerializableEnum : &lt;span class="kwrd"&gt;int&lt;/span&gt;
    {
        None = 0,
        All,
        Some,
        ALot
    }
    
}&lt;/pre&gt;
&lt;p&gt;Questa classe, rappresenta l’entity più grezza e semplice, contiene una serie di property pubbliche, una per ogni tipo di dato base usato in .NET, contiene i Metodi  WriteXml e ReadXml, un override del metodo ToString per permetterci di visualizzarne il contenuto ed infine una enumerazione che ci permette di mostrare che anche i dati enumerati, sono serializzati automaticamente.&lt;/p&gt;
&lt;p&gt;Instanziando la classe e lanciando WriteXml su un file, otterremo il seguente risultato:&lt;/p&gt;
&lt;pre class="HtmlFormat"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Serializzabile&lt;/span&gt; &lt;span class="attr"&gt;xmlns:xsi&lt;/span&gt;&lt;span class="kwrd"&gt;=&lt;a href="http://www.w3.org/2001/XMLSchema-instance"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="attr"&gt;     xmlns:xsd&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheChar&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;65&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheChar&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheByte&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;10&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheByte&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheBool&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;true&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheBool&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheShort&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;100&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheShort&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheInt&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1000&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheInt&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheLong&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1000000&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheLong&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheFloat&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1234.78992&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheFloat&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheDouble&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;9800000.896&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheDouble&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheDecimal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;766000000.654390001&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheDecimal&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheString&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;The string is very nice and useful.&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheString&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheDate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2010-11-01T09:26:13.331+01:00&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheDate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheGuid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;3da90b04-ec02-4308-a177-fc6723ab8aa9&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheGuid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TheEnum&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;ALot&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TheEnum&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Serializzabile&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Usando la ReadXml per rileggere il file, otterremo una classe equivalente a quella da noi salvata.&lt;/p&gt;
&lt;p&gt;Se non abbiamo particolari esigenze, questo è il metodo più semplice di ottenere un entità serializzabile.&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f9cef952-a247-40e7-af19-b96c7a17cc4a" class="wlWriterEditableSmartContent"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/XML" rel="tag"&gt;XML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/entities" rel="tag"&gt;entities&lt;/a&gt;,&lt;a href="http://technorati.com/tags/serialization" rel="tag"&gt;serialization&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/544.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2010/11/01/lavorare-con-xml-parte-2.aspx</guid>
            <pubDate>Mon, 01 Nov 2010 08:28:58 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/544.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2010/11/01/lavorare-con-xml-parte-2.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/544.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Collection e predicati cercare elementi senza cicli</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2010/08/13/collection-e-predicati-cercare-elementi-senza-cicli.aspx</link>
            <description>&lt;p&gt;Una delle cose che risultano essere più utili, quando si lavora con le collezioni, sono i metodi di Ricerca, che ci permettono di trovare un elemento della collezione utilizzando come criterio una o più delle sue proprietà. Questi metodi, possono essere creati sia come Indexer, ovvero le property che ci permettono di trovare un elemento passando il valore di una o più proprietà dello stesso, oppure come metodi specifici. Questa seconda opzione, si utilizza perché spesso ci possono essere più property dello stesso tipo che possono essere usate per la ricerca, pertanto non è possibile creare degli indexer per tutte loro. Lavoriamo su un esempio:&lt;/p&gt;
&lt;p&gt;La classe Entity, da noi definita che chiameremo AnagraficaAzienda, espone le seguenti proprietà:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; DescrizioneRicerca
&lt;span class="kwrd"&gt;string&lt;/span&gt; RagioneSociale
&lt;span class="kwrd"&gt;string&lt;/span&gt; PartitaIva
&lt;span class="kwrd"&gt;string&lt;/span&gt; Indirizzo
&lt;span class="kwrd"&gt;string&lt;/span&gt; CAP
&lt;span class="kwrd"&gt;string&lt;/span&gt; Citta
&lt;span class="kwrd"&gt;string&lt;/span&gt; PV
&lt;span class="kwrd"&gt;int&lt;/span&gt; IDTipo
&lt;span class="kwrd"&gt;int&lt;/span&gt; IDAnagrafica&lt;/pre&gt;
&lt;p&gt;Per creare un Indexer per cercare dati usando la Descrizione di Ricerca possiamo usare questo codice:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;public AnagraficaAzienda &lt;span class="kwrd"&gt;this&lt;/span&gt;[&lt;span class="kwrd"&gt;string&lt;/span&gt; pDescrizioneRocerca]
{
    get
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt;( Find(item=&amp;gt;item.DescrizioneRicerca==pDescrizioneRicerca);
    }
}&lt;/pre&gt;
&lt;p&gt;per creare un metodo che ritorna una lista dei dati in cui la ragione sociale soddisfa una regular expression:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;AnagraficaAzienda&amp;gt; FindWithRegEx( &lt;span class="kwrd"&gt;string&lt;/span&gt; pRegEx )
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt; (FindAll(items =&amp;gt; Regex.Match(items.RagioneSociale, pRegEx).Success));
}&lt;/pre&gt;
&lt;p&gt;per creare un metodo che ritorna una anagrafica con una determinata partita IVA:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; AnagraficaAzienda FindXPartitaIva(&lt;span class="kwrd"&gt;string&lt;/span&gt; pPartitaIva)
{
    &lt;span class="kwrd"&gt;return&lt;/span&gt;( Find(item=&amp;gt;item.PartitaIva==pPartitaIva);
}&lt;/pre&gt;
&lt;p&gt;Per creare un indexer multi dimensionale possiamo usare il seguente codice&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; AnagraficaAzienda &lt;span class="kwrd"&gt;this&lt;/span&gt;[&lt;span class="kwrd"&gt;int&lt;/span&gt; pIDZona, &lt;span class="kwrd"&gt;int&lt;/span&gt; pIDAnagrafica]
{
    get
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt;( Find(item=&amp;gt;item.IDZona==pIDZona &amp;amp;&amp;amp; item.IDAnagrafica==pIDAnagrafica);
    }
}&lt;/pre&gt;
&lt;p&gt;Come possiamo vedere, un predicato ci permette di indicare una qualsiasi espressione binaria quale criterio di ricerca.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:677451c8-0e78-48f4-b0b6-79d9ea72d764" class="wlWriterEditableSmartContent"&gt;Tags: &lt;a rel="tag" href="http://community.dotnetwork.it/Sabrina/Tags/Collection/default.aspx"&gt;Collection&lt;/a&gt;, &lt;a rel="tag" href="http://community.dotnetwork.it/Sabrina/Tags/Predicate/default.aspx"&gt;Predicate&lt;/a&gt;, &lt;a rel="tag" href="http://community.dotnetwork.it/Sabrina/Tags/Find/default.aspx"&gt;Find&lt;/a&gt;, &lt;a rel="tag" href="http://community.dotnetwork.it/Sabrina/Tags/FindAll/default.aspx"&gt;FindAll&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/489.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2010/08/13/collection-e-predicati-cercare-elementi-senza-cicli.aspx</guid>
            <pubDate>Fri, 13 Aug 2010 15:02:28 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/489.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2010/08/13/collection-e-predicati-cercare-elementi-senza-cicli.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/489.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Un interessantissimo articolo per capire i threads</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2010/06/01/un-interessantissimo-articolo-per-capire-i-threads.aspx</link>
            <description>&lt;p&gt;Cercando sui motori di ricerca a volte capita di trovare delle cose interessanti anche se non hanno molto a che vedere con quello che stai cercando.&lt;/p&gt;  &lt;p&gt;Oggi, cercando alcune notizie sull’intercettazione di un keypress, il mio collega ha trovato questo articolo:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.albahari.com/threading/" href="http://www.albahari.com/threading/"&gt;http://www.albahari.com/threading/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;scritto da un certo signor Joseph Albahari, che spiega in dettaglio tutto quello che è necessario sapere per lavorare con i threads in una applicazione.&lt;/p&gt;  &lt;p&gt;Pertanto lo appunto qui sia per me che per chi legge e faccio i miei complimenti al Signor Albahari per la sua chiarezza.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f1fe87b7-a3b2-4c48-b847-d8f59e63cb68" class="wlWriterEditableSmartContent"&gt;Tags: &lt;a href="http://community.dotnetwork.it/Sabrina/Tags/Threads/default.aspx" rel="tag"&gt;Threads&lt;/a&gt;, &lt;a href="http://community.dotnetwork.it/Sabrina/Tags/multithreading/default.aspx" rel="tag"&gt;multithreading&lt;/a&gt;, &lt;a href="http://community.dotnetwork.it/Sabrina/Tags/C%23/default.aspx" rel="tag"&gt;C#&lt;/a&gt;&lt;/div&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/429.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2010/06/01/un-interessantissimo-articolo-per-capire-i-threads.aspx</guid>
            <pubDate>Tue, 01 Jun 2010 16:18:58 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/429.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2010/06/01/un-interessantissimo-articolo-per-capire-i-threads.aspx#feedback</comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/429.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Convertire numeri in array di byte</title>
            <link>http://community.dotnetwork.it/sabrina/archive/2008/10/10/convertire-numeri-in-array-di-byte.aspx</link>
            <description>&lt;p&gt;Quando lavoravo in C non c'era alcun problema a scrivere su un file binario un intero o un altro valore trasformandolo in un array di byte, bastava una cosa di questo tipo:&lt;/p&gt;
&lt;p&gt;char bytes[5] = (char *)myinteger;&lt;/p&gt;
&lt;p&gt;Ok, non è proprio preciso ma ci assomiglia :D scusate ma è un po' che non lo uso quindi a memoria non è facile. In .NET invece dove le tipizzazioni e il codice managed rendono a volte le cose complicate, visto che questo tipo di operazione non è quotidiana mi dimentico sempre come si fa, pertanto lo scrivo:&lt;/p&gt;
&lt;pre class="CSharpFormat"&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; val = 0x10008000;
&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bar = BitConverter.GetBytes(val);
File.WriteAllBytes(&lt;span class="str"&gt;"test.bin"&lt;/span&gt;, bar);    &lt;/pre&gt;
&lt;p&gt;Il BitConverter che forse sarebbe stato più simpatico si chiamasse ByteConverter, permette di convertire in un array di Byte vari tipi di dati. &lt;/p&gt;
&lt;p&gt;L'utilità, come si può vedere dal codice qui sopra è quella di scrivere su un file binario il contenuto di una variabile. Ricordo che ci sono ovviamente strumenti più moderni e più adatti, la Serializzazione binaria ad esempio ma quando serve una cosa veloce, anche questo può aiutare.&lt;/p&gt;
&lt;p&gt;Tags: &lt;a rel="tag" href="http://community.dotnetwork.it/Sabrina/Tags/classi/default.aspx"&gt;Classi&lt;/a&gt;, &lt;a rel="tag" href="http://community.dotnetwork.it/Sabrina/Tags/Array/default.aspx"&gt;Array&lt;/a&gt;, &lt;a rel="tag" href="http://community.dotnetwork.it/Sabrina/Tags/Byte/default.aspx"&gt;Byte&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.dotnetwork.it/sabrina/aggbug/144.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Sabrina C.</dc:creator>
            <guid>http://community.dotnetwork.it/sabrina/archive/2008/10/10/convertire-numeri-in-array-di-byte.aspx</guid>
            <pubDate>Fri, 10 Oct 2008 21:57:27 GMT</pubDate>
            <wfw:comment>http://community.dotnetwork.it/sabrina/comments/144.aspx</wfw:comment>
            <comments>http://community.dotnetwork.it/sabrina/archive/2008/10/10/convertire-numeri-in-array-di-byte.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://community.dotnetwork.it/sabrina/comments/commentRss/144.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
