Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco
MiniLED di fascia media con local dimming a 192 zone, 144 Hz nativi e audio firmato Devialet. La prova strumentale riscontra colori affidabili e gaming reattivo, per un prodotto molto accessibile e convincente. Ma la soundbar aggiuntiva è quasi d'obbligo
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-10-2010, 11:38   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[.Net 4.0 / Entity Framework]Query Dinamiche

Eccomi ancora a rompere ma sto letteralmente innamorandomi sempre più di "sto coso"

Allora, il mio scenario è questo:

Una semplice griglia che viene popolata dall'entità del caso.

Vorrei applicare un filtro dinamico su questa griglia per es.:

l'entità è formata da cognome, nome, data di nascita, altri dati anagrafici.

Quello che vorrei realizzare è di farmi restituire uno o più records senza specificare su quale "colonna" sto cercando, ad esempio, inserisco un codice fiscale, oppure inserisco le iniziali del cognome. In questi due semplici casi, ciò che mi aspetto è di ottenere un solo record per il codice fiscale, e diversi records per una ricerca parziale sul cognome. Tutto questo senza dover ogni volta specificare:

Codice:
var query = from persone in context.People
     select persone
     Where bla

//ma...
var query = from persone in context.People
     select persone
     where qualsiasiCampo Like filtro
il mio punto di partenza è questo link:

http://msdn.microsoft.com/it-it/library/bb399367.aspx

dal quale ho già ottenuto moltissime informazioni.

Grazie

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2010, 12:51   #2
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
per applicare un numero variabile di filtri devi passare dalla scrittura "a query" a quella "a funzioni" (non ricordo i nomi "ufficiali", ma spero che mi capisci)

noi usiamo qualcosa tipo:

Codice:
        public static IEnumerable<T> Search<T>(this IEnumerable<T> source, IEnumerable<SearchParameter> parameters, SearchContext context)
            where T : ISearchObject<T>
        {
            var items = source;

            if (items != null)
            {
                foreach (SearchParameter parameter in parameters)
                {
                    items = items.Where(parameter.Evaluate);

                    if (!items.Any())
                        break;
                }
            }
            return items;
        }
dove SearchParameter é una classe astratta che fondamentalmente espone un metodo astratto la cui firma é

Codice:
bool Evaluate(T arg)
considera peró che io lavoro su L2Objects. Anche se dovrebbe funzionare anche su L2Entities, bada solo che i "parametri" usino funzioni note al motore di query =)

(se il capo sgama sto snippet postato qui mi fa il culo )
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2010, 13:04   #3
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
per applicare un numero variabile di filtri devi passare dalla scrittura "a query" a quella "a funzioni" (non ricordo i nomi "ufficiali", ma spero che mi capisci)

noi usiamo qualcosa tipo:

Codice:
        public static IEnumerable<T> Search<T>(this IEnumerable<T> source, IEnumerable<SearchParameter> parameters, SearchContext context)
            where T : ISearchObject<T>
        {
            var items = source;

            if (items != null)
            {
                foreach (SearchParameter parameter in parameters)
                {
                    items = items.Where(parameter.Evaluate);

                    if (!items.Any())
                        break;
                }
            }
            return items;
        }
dove SearchParameter é una classe astratta che fondamentalmente espone un metodo astratto la cui firma é

Codice:
bool Evaluate(T arg)
considera peró che io lavoro su L2Objects. Anche se dovrebbe funzionare anche su L2Entities, bada solo che i "parametri" usino funzioni note al motore di query =)

(se il capo sgama sto snippet postato qui mi fa il culo )
Wow! grazie mille !!!

E' quindi lo stesso identico principio dei predicati ?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2010, 09:02   #4
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
In questo contesto, è sbagliato usare la reflection ?

io ho 'firmato' in questo modo:

Codice:
bool Match(TEntity entity)
{
   if(entity.GetType().GetProperty(evaluatedPropertyName).GetValue(entity, null).ToString().Contains(someString))
     return true;
   return false;
}

?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2010, 10:40   #5
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Mamma mia, ci sono tanti strumenti a disposizione che mi sto perdendo


allora:

Codice:
var results = myContext.myObject.ToList().FindAll(o => o.Proprietà.Contains("abc"));
E' possibile assegnare un valore a runtime a Proprietà ?
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2010, 11:14   #6
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
combinando insieme le cose:

Codice:
public class ViewContext<TEntity>
{
     public static bool Match(string dataPropertyName, string filter, TEntity entity)
     {
         if(typeof(TEntity).GetProperty(dataPropertyName).GetValue(entity, null).ToString().Contains(filter))

           return true;
         return false;
}

////

var results = context.MyObject.ToList().FindAll(obj =>
   ViewContext<MyOBject>.Match(runtimeString, runtimeFilter, obj));

whatEverBindingOrDataSource.DataSource = results;
Vorrei sottolineare che questi sono soltanto i miei primi approcci didattici verso EF... (non vorrei finire sul daily WTF )
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
AWS e Azure sono gatekeeper e vanno rego...
Huawei presenta una nuova infrastruttura...
Logitech G e Activision uniscono le forz...
Snapdragon Summit 2026: ecco quando sara...
Sardegna, debutta il primo treno a idrog...
CXMT non ci salverà dai prezzi de...
Tidal contro la musica creata con l'inte...
Videproiettore compatto XGIMI MoGo 2 Pro...
Narwal rilancia su Amazon per il post-Pr...
Il regista di 47 Ronin ha frodato Netfli...
ChatGPT usato in massa per superare l'es...
Apple colpita da un mega-leak: presunto ...
Due nuovi superconduttori scoperti grazi...
La funzione 'Prendi appunti per me' di G...
Meta Brain2Qwerty v2: l'IA che trasforma...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v