Question

Existe-t-il un moyen de créer une requête linq afin de l'utiliser ultérieurement ou de l'afficher / l'imprimer (et plus précisément, la clause where)?

Était-ce utile?

La solution

Qu'est-ce que vous voulez exactement? Vous pouvez capturer uniquement la expression à partir de Where - quelque chose comme:

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

Parce que cela va dans un arbre d'expression, il y a un sens ToString().

Si vous voulez le code SQL (etc.), cela dépend de la mise en oeuvre. Par exemple, avec LINQ-to-SQL, vous pouvez utiliser .Log - par exemple, ctx.Log = Console.Out;

Si vous voulez que le prédicat sorte du milieu d'un IQueryable<T> flux, c'est beaucoup plus compliqué ...

Autres conseils

LINQ n'est-il pas une fonctionnalité .NET 3.5?

modifier:

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

- > LINQ est uniquement disponible à partir de .NET 3.5, donc pas 3.0 comme le demande le sujet.

edit2:

Ok, le TS parle de C # 3.0, qui vient avec .NET 3.5.

Très déroutant.

Vous pouvez regarder System.Linq.Dynamic c'est un addon à linq pour créer dynamique où, ordre, etc.

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

Cela pourrait être utile.

Regardez cet exemple à partir de 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 ne peut pas être affiché (autant que je sache), si vous voulez dire une requête 'linq2sql' (requête qg. sql construite à partir de linq), non, elle ne peut pas être imprimée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top