Вопрос

Есть ли способ создать запрос linq, чтобы использовать его позже или отобразить / распечатать его (и, более конкретно, предложение where)?

Это было полезно?

Решение

Что именно вы хотите? Вы можете захватить только выражение из Where - что-то вроде:

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

Поскольку это происходит в дереве выражений, существует значимое ToString().

Если вам нужен SQL (и т. д.), это будет зависеть от реализации. Например, с LINQ-to-SQL вы можете использовать .Log - например, ctx.Log = Console.Out;

Если вы хотите, чтобы предикат находился в середине канала IQueryable<T>, то это гораздо сложнее ...

Другие советы

Разве LINQ не является функцией .NET 3.5?

Редактировать:

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

--> LINQ доступен только с .NET 3.5, поэтому не 3.0, как просит topicstarter.

редактировать 2:

Итак, в TS говорится о C # 3.0, который поставляется вместе с .NET 3.5.

Довольно запутанный.

Вы можете взглянуть на System.Linq.Dynamic, это дополнение к linq для построения динамических где, orderby и т. д.

например, tblProduct.Where (" product_id = @ 0 " ;, product_id)

Это может оказать некоторую помощь.

Посмотрите на этот пример из 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 не может быть отображен (AFAIK), если вы имеете в виду запрос 'linq2sql' (qg. SQL-запрос, построенный из linq), нет, он не может быть распечатан.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top