posts - 82, comments - 0, trackbacks - 0

My Links

News

Archives

Post Categories

C# Download

Facebook

Informativa cookie

Linkedin

Microsoft

Msdn Gallery

Twitter

VisualBasic

Wiki Tecknet

Interrogazione dei dati con LINQ to DATASET

Questo semplice esempio di codice dimostra in che modo e possibile effettuare l'interrogazione di un dataset mediante l'utilizzo di LINQ.Linq e parte integrante di VisualStudio a partire dalla versione 2008 ed .netFramework 3.5.Sebbene Linq si suddivida in diverse tipologie , Linq to Objects , Linq to AdoNet, Linq to Sql, Linq to Datset , Linq to Entities e Linq to Xml, questo esempio si concentra sull'utilizzo di Linq to Dataset . Verrà mostrato come eseguire query di ricerca su Dataset , vedremo la sintassi utilizzata e vedremo anche in che modo il risultato della query venga poi visualizzato all'interno del form.

L'esempio e composto da un DataBase chiamato Rubrica.sdf con al suo interno una tabella denominata DatiPersonali , da un controllo ComboBox utilizzato per selezionare il tipo di ricerca da eseguire all'interno del DataBase , un controllo TextBox dove andrà inserito cosa si vuole cercare all'interno del DatBase , un controllo Button per avviare la ricerca , un controllo Button per eseguire il refresch per visualizzare nuovamente tutti i dati dopo aver terminato la ricerca ed infine un controllo DataGrid generato mediante la configurazione guidata del Dataset.

L'esempio include la possibilità di effettuare i principali comandi per la manipolazione dei dati ovvero l'insert , L'update e Delete. Qui di seguito mostro il codice completo.

// Spazio dei nomi
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

// Sample_query_Linq
namespace Sample_query_Linq
{
    // Classe FrmMain
    public partial class FrmMain : Form
    {
        // Costruttore della clsee FrmMain
        public FrmMain() { // Richiamo del metodo InitializeComponent
            InitializeComponent();
            // Richiamo del metodo SetUpDataGridView
            SetUpDataGridView(dATIPERSONALIDataGridView);
        }

        // Evento Click del pulsante dATIPERSONALIBindingNavigatorSaveItem
        private void dATIPERSONALIBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.dATIPERSONALIBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.rubricaDataSet);
        }

        // Evento load del form FrmMain
        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: questa riga di codice carica i dati nella tabella 'rubricaDataSet.DATIPERSONALI'. È possibile spostarla o rimuoverla se necessario.
            this.dATIPERSONALITableAdapter.Fill(this.rubricaDataSet.DATIPERSONALI);
        }

        // Evento Click del pulsante  btnTrova
        private void btnTrova_Click(object sender, EventArgs e)
        {
            // Esegue il costrutto switch sul valore di cbxRicerca
            switch (this.cbxRicerca.Text)
            {
                // Se cbxRicerca e uguale a NOME
                case "NOME":
                    // Esegui la query di ricerca nella tabella DATIPERSONALI
                    // Se in c.NOME ci sono valori presenti uguali al valori di txtRicerca
                    // Seleziono c
                    var queryNome = from c in this.rubricaDataSet.DATIPERSONALI
                                    where c.NOME.ToString().ToUpper() == this.txtRicerca.Text.ToString().ToUpper()
                                    select c;

                    // Assegno alla proprietà DataSource di dATIPERSONALIBindingSource il risultato
                    // Della query di ricerca mediante un oggetto Data.DataView con supporto di LINQ che
                    // rappresenta la query LINQ to DATASET
                    this.dATIPERSONALIBindingSource.DataSource = queryNome.AsDataView();


                    break;

                // Se cbxRicerca e uguale a COGNOME
                case "COGNOME":
                    // Esegui la query di ricerca nella tabella DATIPERSONALI
                    // Se in c.COGNOME ci sono valori presenti uguali al valori di txtRicerca
                    // Seleziono c
                    var queryCognome = from c in this.rubricaDataSet.DATIPERSONALI
                                       where c.COGNOME.ToString().ToUpper() == this.txtRicerca.Text.ToString().ToUpper()
                                       select c;

                    // Assegno alla proprietà DataSource di dATIPERSONALIBindingSource il risultato
                    // Della query di ricerca mediante un oggetto Data.DataView con supporto di LINQ che
                    // rappresenta la query LINQ to DATASET
                    this.dATIPERSONALIBindingSource.DataSource = queryCognome.AsDataView();
                    break;

                // Se cbxRicerca e uguale a INDIRIZZO
                case "INDIRIZZO":
                    // Esegui la query di ricerca nella tabella DATIPERSONALI
                    // Se in c.INDIRIZZO ci sono valori presenti uguali al valori di txtRicerca
                    // Seleziono c
                    var queryIndirizzo = from c in this.rubricaDataSet.DATIPERSONALI
                                         where c.INDIRIZZO.ToString().ToUpper() == this.txtRicerca.Text.ToString().ToUpper()
                                         select c;

                    // Assegno alla proprietà DataSource di dATIPERSONALIBindingSource il risultato
                    // Della query di ricerca mediante un oggetto Data.DataView con supporto di LINQ che
                    // rappresenta la query LINQ to DATASET
                    this.dATIPERSONALIBindingSource.DataSource = queryIndirizzo.AsDataView();
                    break;

                // Se cbxRicerca e uguale a TELEFONO
                case "TELEFONO":
                    // Esegui la query di ricerca nella tabella DATIPERSONALI
                    // Se in c.TELEFONO ci sono valori presenti uguali al valori di txtRicerca
                    // Seleziono c
                    var queryTelefono = from c in this.rubricaDataSet.DATIPERSONALI
                                        where c.TELEFONO.ToString().ToUpper() == this.txtRicerca.Text.ToString().ToUpper()
                                        select c;

                    // Assegno alla proprietà DataSource di dATIPERSONALIBindingSource il risultato
                    // Della query di ricerca mediante un oggetto Data.DataView con supporto di LINQ che
                    // rappresenta la query LINQ to DATASET
                    this.dATIPERSONALIBindingSource.DataSource = queryTelefono.AsDataView();
                    break;

                // Se cbxRicerca e uguale a NAZIONALITA'
                case "NAZIONALITA'":
                    // Esegui la query di ricerca nella tabella DATIPERSONALI
                    // Se in c.NAZIONALITA' ci sono valori presenti uguali al valori di txtRicerca
                    // Seleziono c
                    var queryNazionalita = from c in this.rubricaDataSet.DATIPERSONALI
                                           where c.NAZIONALITA.ToString().ToUpper() == this.txtRicerca.Text.ToString().ToUpper()
                                           select c;

                    // Assegno alla proprietà DataSource di dATIPERSONALIBindingSource il risultato
                    // Della query di ricerca mediante un oggetto Data.DataView con supporto di LINQ che
                    // rappresenta la query LINQ to DATASET
                    this.dATIPERSONALIBindingSource.DataSource = queryNazionalita.AsDataView();
                    break;
            }
        }

        // Evento Click del pulsante  btnRefresch
        private void btnRefresch_Click(object sender, EventArgs e)
        {
            // Riassegno l'origine dati da rubricaDataSet.DATIPERSONALI
            this.dATIPERSONALIBindingSource.DataSource = rubricaDataSet.DATIPERSONALI;
        }

        // Metodo SetUpDataGridView
        private void SetUpDataGridView(DataGridView myDatagrid)
        {
            DataGridViewCellStyle style = myDatagrid.ColumnHeadersDefaultCellStyle;
            style.BackColor = Color.Navy;
            style.ForeColor = Color.White;
            style.Font = new Font(myDatagrid.Font, FontStyle.Bold);

            myDatagrid.EditMode = DataGridViewEditMode.EditOnEnter;
            myDatagrid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;

            myDatagrid.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
            myDatagrid.CellBorderStyle = DataGridViewCellBorderStyle.Single;
            myDatagrid.GridColor = SystemColors.ActiveBorder;
            myDatagrid.RowHeadersVisible = false;

            myDatagrid.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            myDatagrid.MultiSelect = false;
            myDatagrid.BackgroundColor = Color.White;
        }
    }
}

La query in questione osservando il codice esegue mediante l'istruzione Where un confrono se il campo NAZIONALITA  della tabella  DATI PERSONALI corrisponde al testo presente nel controllo TextBox txtRicerca, e restituisce alla proprietà DataSource di datipersonaliBindingSourse un oggetto System.Data.DataView. Per maggiori informazioni sulla classe DataView vi segnalo questolink

// Se cbxRicerca e uguale a NAZIONALITA'
                case "NAZIONALITA'":
                    // Esegui la query di ricerca nella tabella DATIPERSONALI
                    // Se in c.NAZIONALITA' ci sono valori presenti uguali al valori di txtRicerca
                    // Seleziono c
                    var queryNazionalita = from c in this.rubricaDataSet.DATIPERSONALI
                                           where c.NAZIONALITA.ToString().ToUpper() == this.txtRicerca.Text.ToString().ToUpper()
                                           select c;

                    // Assegno alla proprietà DataSource di dATIPERSONALIBindingSource il risultato
                    // Della query di ricerca mediante un oggetto Data.DataView con supporto di LINQ che
                    // rappresenta la query LINQ to DATASET
                    this.dATIPERSONALIBindingSource.DataSource = queryNazionalita.AsDataView();
                    break;

Con questo semplice esempio e possibile capire come Linq sia un ottimo linguaggio e strumento per la ricerda dei dati   all'interno di un origine Dati.

Carmelo La Monica

Print | posted on venerdì 3 giugno 2011 00:29 | Filed Under [ Articoli su C# ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 7 and 5 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET