LINQ
Documentazione "Work in Progress" della prossima release di Entity Framework : http://ef.readthedocs.org/en/latest/
Supporto a “.ToString()” e “String.Concat()”, un esempio: var queryConcat = from c in db.Vehicles
where string.Concat(c.EngineSize, c.HP).Equals("1600110")
select c;
var queryToString = from c in db.Vehicles
where c.HP.ToString().Equals("110")
select c;
Abbiamo due Query LINQ che filtrano i dati in base a condizioni su stringhe, la prima “tira fuori” tutti i veicoli dove la concatenazione dei valori...
Immaginiamo di avere un database SQL Server esistente, e vogliamo utilizzare Entity Framework Code First per mappare il modello dati. Supponendo di avere due tabelle “Items” e “Categories” in relazione come da Database Diagram seguente: Ed una “Vista” SQL Server definita come segue: CREATE VIEW [dbo].[VCategories]
AS
SELECT Id, Name
FROM Categories
WHERE (Deleted = 0)
Aggiungiamo due classi C# definite in questo modo:
public class Category
{
public int Id { get; set; }
public string Description { get; set; }
}
public class...
Ieri 9/3/12 si è svolto l’evento WeWantWeb organizzato da DomusDotNet presso la sede Microsoft di Roma. Le sessioni sono state registrare e quanto prima pubblicheremo Slide, codice sorgente degli esempi e Video, sul sito di DomusDotNet. Grazie a tutti i partecipanti!!! Attendiamo i vostri feedback! Al prossimo evento . Da sinistra verso destra: Alessandro Mostarda e Massimo Bonanni, Giorgio Di Nardo, Nick, io , parte di coloro che hanno avuto la pazienza di ascoltarci .
Dopo tanti sacrifici, ogni tanto arriva qualche soddisfazione: ieri è mi giunta una copia del libro “Approaches in Material Sampling”, in cui, oltre ad essere uno dei coautori di un capitolo (Grazie Gianni), è presente un CD allegato con alcuni software che permettono di eseguire analisi statistiche sui dati di campionamento. Uno di questi è SISSI 2.0: “a resampling-based software for sample size determination”. Il tool è stato scritto in .NET 3.5 facendo largo uso di LINQ To Objects e programmazione multi-threading. Spero quanto prima di riuscire ad eseguire il porting verso .NET 4.0 per sfruttare MEF ed aggiungere un...
Se abbiamo una lista, ad esempio contenenti dei nomi, e vogliamo estrarre gli indici delle item che soddisfano una certa condizione di filtro, possiamo scrivere:
1: Dim Nomi As New List(Of String)
2:
3: Nomi.Add("Antonio")
4: Nomi.Add("Franco")
5: Nomi.Add("Giovanni")
6: Nomi.Add("Antonio")
7:
8: Dim sStringaRiferimento As String = "Antonio"
9:
10: Dim q As IEnumerable(Of Integer) = Nomi.Select( _
11: Function(nome, indice) New With {nome,...
Supponiamo di lavorare con due classi del tipo seguente: e di voler utilizzare Linq To Objects per eseguire delle operazioni sul nostro insieme di dati, composto da un array di oggetti Documento: 1 Documento[] documenti = new Documento[]{
2 new Documento ("10",new Cliente {Nome="Pietro",Cognome ="Libro",CodiceFiscale="ABA"}),
3 new Documento ("2",new Cliente {Nome="Pietro",Cognome ="Bianchi",CodiceFiscale="ABB"}),
4 new Documento ("1",new Cliente {Nome="Giuseppe",Cognome ="Rossi",CodiceFiscale="ABC"}),
5 new Documento ("1",new Cliente {Nome="Gabriele",Cognome ="Bianchi",CodiceFiscale="ABD"})};
Supponiamo di voler utilizzare una query expression per ottenere una lista (nello specifico un oggetto che implementi l'interfaccia...
Mi trovavo ad analizzare un vecchio codice VB6 per un amico, ed ho trovato una possibile implementazione di un algorimo per la risoluzione del seguente problema: Dato un array di double, trovare il valore minimo, escludendo dei valori, ad esempio, (0). Soluzione del passato trovata (VB6) Function TrovaMinimo(dati() As Double, Optional Except As Double)
Dim i As Integer
Dim Minimo As Double
Dim numerodati As Integer
numerodati = UBound(dati)
...
Questo post è nato con uno scopo diverso da quello dell'implementazione di un Rss Reader, dato che, è sufficiente cercare su internet per trovarne di belli e pronti, ma per enfatizzare alcune proprietà molto interessanti dei controlli WPF, come la possibilità di eseguire il raggruppamento dei dati nei controlli ListBox o ListView. Piccola parentesi: per chi volesse conoscere in dettaglio le specifiche RSS 2.0 le può trovare qui. Iniziamo sviluppando un set di classi come riassunto dal seguente Class Diagram: Nel resto dell'esempio saranno prese in considerazione solo istanze di tipo Rss e RssItem. Generalmente, senza...
Se abbiamo la necessità di ordinare una query Linq per più campi possiamo utilizzare gli operatori ThenBy e ThenByDescending. Considerando le classi del post precedente, se volessimo ordinare la query: 1 var query1 = esamiSostenuti
2 .OrderBy(es => es.ID_Studente)
3 .Select(es => new { es.ID_Studente, es.Voto });
non solo per il campo ID_Studente, ma anche per il campo Voto, possiamo scrivere:
1 //Ordinamento Ascendente
2 var query2 = esamiSostenuti
3 .OrderBy(es => es.ID_Studente)
4 .ThenBy(es => es.Voto) ...
Supponiamo di avere tre classi rappresentanti una ipotetica basi di dati "Università" (molto semplice). Una classe rappresentante lo studente, un classe rappresentante un esame sostenuto dallo studente ed una classe rappresentante l'associazione tra studenti ed esami sostenuti. Utilizzando un ClassDiagram avremmo qualcosa di simile a: Supponiamo ora, di voler recuperare, una volta popolate le collezione di oggetti opportune, quali esami siano stati sostenuti dagli studenti e con quale votazione, utilizzando LINQ e l'operatore di Group By. Possiamo scrivere del codice del tipo: 1 var queryEsamiSostenutiDaStudenti =
2 ...
Se nella nostra applicazione abbiamo la necessità di leggere molte volte gli stessi dati, può essere conveniente (se questi non cambiano frequentemente nel tempo), l'utilizzo di ToList (o ToArray ) per convertire il risultato di una query linq in un oggetto List o Array da utilizzare come cache dei dati. Supponiamo di avere mappato una tabella Corsi con la seguente entità: 1 [Table(Name="Corso")]
2 public class Corso
3 {
4
5 [Column(IsPrimaryKey=true)]
6 ...
Trovato il tempo per installare la beta 1 di Visual Studio "Orcas" mi sono concesso 5 minuti per effettuare qualche (piccolo)esperimento con "LINQ" (per fortuna per WPF e WCF ho utilizzato le estensioni di VS2005 e non ho aspettato così tanto :-) ),ecco il codice
Dim lPersone As New Persone Dim arrNomi() As String = New String() { _ "Pietro", "Giovanni", "Paolo", "Bottoni", "Alessandro", "Nicola", "Filippo", _ "Maria", "Stefano", "Luigi", "Pierluigi"} 'Trova tutti i nomi che iniziano per Pi ed ordina il risultato in modo crescente Dim nomi As IEnumerable = From s As String In arrNomi Where s.StartsWith("Pi") Order By...