Domanda

C'è un modo per creare una query linq per usarla in un secondo momento o per visualizzarla / stamparla (e più specificamente, la clausola where)?

È stato utile?

Soluzione

Che cosa vuoi esattamente? Puoi catturare solo l ' espressione da Where - qualcosa del tipo:

Expression<Func<SomeType, bool>> predicate = row => row.IsActive
          && row.Color == "red";

Poiché questo sta andando a un albero delle espressioni, c'è un ToString().

significativo

Se si desidera l'SQL (ecc.), sarà specifico per l'implementazione. Ad esempio, con LINQ-to-SQL è possibile utilizzare .Log, ad esempio ctx.Log = Console.Out;

Se vuoi il predicato nel mezzo di un IQueryable<T> feed, allora è molto più complicato ...

Altri suggerimenti

LINQ non è una funzionalità di .NET 3.5?

modifica

http://msdn.microsoft.com/en-us/library /bb332048.aspx

- GT &; LINQ è disponibile solo da .NET 3.5, quindi non 3.0 come richiesto dall'argomento.

EDIT2:

Ok, quindi il TS parla di C # 3.0, che viene fornito con .NET 3.5.

Abbastanza confuso.

Potresti dare un'occhiata a System.Linq.Dynamic è un componente aggiuntivo di linq per creare dinamica dove, ordine ecc.

es. tblProduct.Where (" product_id = @ 0 " ;, product_id)

Potrebbe essere di aiuto.

Guarda questo esempio da MSDN:

// Lambda expression as executable code.
Func<int, bool> deleg = i => i < 5;
// Invoke the delegate and display the output.
Console.WriteLine("deleg(4) = {0}", deleg(4));

// Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression<Func<int, bool>> expr = i => i < 5;
// Compile the expression tree into executable code.
Func<int, bool> deleg2 = expr.Compile();
// Invoke the method and print the output.
Console.WriteLine("deleg2(4) = {0}", deleg2(4));

Linq non può essere visualizzato (AFAIK), se si intende una query 'linq2sql' (qg. query sql creata da linq), no, non può essere stampata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top