Pergunta

Existe uma maneira de criar uma consulta LINQ para usá -la mais tarde ou exibi -la/imprimi -la (e mais especificamente, a cláusula WHERE)?

Foi útil?

Solução

O que exatamente você quer? Você pode capturar apenas o expressão de Where - algo como:

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

Porque isso está indo para uma árvore de expressão, há um significativo ToString().

Se você deseja o SQL (etc), isso será específico da implementação. Por exemplo, com Linq-to-SQL, você pode usar .Log - por exemplo, ctx.Log = Console.Out;

Se você deseja o predicado do meio de um IQueryable<T> Alimente, então isso é muito mais complicado ...

Outras dicas

O LINQ A .NET 3.5-F-FEATURE?

editar:

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

-> O LINQ está disponível apenas no .NET 3.5, então não 3.0, como o Topicstarter pergunta.

Edit2:

OK, então o TS fala sobre C# 3.0, que vem com .NET 3.5.

Bastante confuso.

Você pode olhar para o System.linq.dynamic é um addon para Linq para construir dinâmica onde, orderby etc.

por exemplo, tblProduct.where ("product_id = @0", product_id)

Isso pode ser de ajuda.

Veja este exemplo do 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));

O LINQ não pode ser exibido (AFAIK), se você quer dizer 'Linq2SQL', consulta (QG. SQL Query construída a partir do LINQ), não, ela não pode ser impressa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top