Ho una tabella di database Item
e l'accesso con linq-to-sql.Espressione non statica <Func<X>> con accesso a 'questo'
posso definire un custom metodo IsSpecial() articoli che restituisce vero se la radice quadrata di Item.id è ancora:
partial class Item
{
public static Expression<Func<Item, bool>> IsSpecial = (i => Math.Sqrt(i.Id)%2==0);
}
allora posso usare tale proprietà in una query LINQ to SQL in questo modo:
datacontext.Item.Where(Item.IsSpecial)
Ora, per motivi estetici, voglio fare IsSpecial non statico e modificarlo in modo da poter chiamare in questo modo:
datacontext.Item.Where(i => i.IsSpecial())
Idealmente questo permetterebbe anche combinando di istruzioni, quale il sopra (di lavoro) snytax non consente:
datacontext.Item.Where(i => i.IsSpecial() && i.Id >100)
Qual è la sintassi corretta per definire questo metodo?
Questo non funziona:
partial class Item
{
public Expression<Func<bool>> IsSpecial = (() => Math.Sqrt(this.Id)%2==0);
// 'this' keyword not available in current context
}
edit: Sto cominciando a sospettare che io chiedo per qualcosa che la sintassi semplicemente non permette
Credo di poter live con datacontext.Item.Where(Item.IsSpecial).Where(i => i>100)
BTW 'datacontext.Item. Dove (i => Item.IsSpecial (i)) 'non verrà compilato. – leppie
Perché si sta definendo una proprietà IsSpecial di tipo Func invece di definire un metodo IsSpecial? O anche solo una proprietà IsSpecial di tipo bool? –
'datacontext.Item.Where (Item.IsSpecial)' compila comunque. – leppie