Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-10-2012, 22:58   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[C# / .net 4.0]Query dinamiche

Buonasera a tutti.

Sto cercando di implementare un tipo di ricerca dinamica basata sul metodo "Contains":

Codice:
public static Expression<Func<T, bool>> DynamicExpression(string propertyName, string filter)
{
    //concettualmente
    ParameterExpression param = Expression.Parameter(typeof(T), "test");
    Expression absProperty = Expression.Property(param, propertyName);
    Expression dest = Expression.Constant(filter);
    Expression customContains = Expression.Call(absProperty, "Contains", null, dest);
    Expression<Func<T, bool>> exp = Expression.Lambda<Func<T, bool>>(customContains, param);
    return exp; 
}
Ora, se ho una fonte di questo tipo:
Codice:
IQueryable result = from r in blah.Where(DynamicExpression("colonna", "valore")
                select new
                {
                    //blah
                };
supponendo che l'oggetto sia :
Codice:
id
colonna
colonna2
colonna3
OggettoX(entità che ha una relazione 1-1 o 1-n)...leggasi NavigationProperty
fin quando cerco sulle "colonne" funziona tutto.
Ovviamente quando cerco 'anche' sull'oggettoX giustamente
mi dice che non esiste una proprietà associata con quel nome.

Per spiegarmi meglio:
Codice:
IQueryable result = from r in ctx.Parent.Where(dynamic("category", "blah"))
                          select new
                          {
                              id = r.id,
                              category = r.Child.category,
                              columnLol = r.lol
                           };
l'errore che ottengo è:

Codice:
Instance property 'category' is not defined for type 'Parent'
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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: 02:12.


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