Allora, questo codice funziona e mi permette abbastanza facilmente di eseguire delle ricerche avendo dei parametri di diverso tipo (nel caso in esempio id e numeroInventario)
private List<Table> get(long? id, long? numeroInventario)
{
var ctx = new DB();
List<Table> numQuery2 = new List<Table>();
String query = "SELECT * FROM TableWHERE idOrigine is null ";
if (id!= null)
query += " AND id= " + id;
if (numeroInventario != null)
query += " AND numeroInventario = " + numeroInventario;
return ctx.Table.SqlQuery(query).ToList();
}
Il mio problema è che vorrei usar meglio le potenzialità (o almeno la sintassi ) di linq e allora ho scritto questo codice
private List<Table> get(long? id, long? numeroInventario)
{
var ctx = new DB();
List<Table> result = new List<Table>();
IQueryable<Table> numQuery2 = ctx.Table.Where(a => a.idOrigine == null);
if (id!= null)
numQuery2.Where(a => a.id== id);
if (numeroInventario != null)
numQuery2.Where(a => a.numeroInventario == numeroInventario);
result = numQuery2.ToList();
return result;
}
Compila senza errori neanche a runtime, il problema, non del tutto irrilevante, è che non funziona :S
Mi resituisce sempre tutta la lista senza filtrarla. Mi viene da pensare che non gli piaccia che vi siano due (o più) where.
Avete idea di come si faccia?