【发布时间】:2023-04-07 06:38:01
【问题描述】:
我知道动态 LINQ,但我想知道是否有一种方法可以在不构建查询字符串的情况下做到这一点。我希望能够使用所有那些不错的内置 LINQ 调用,如 Contains、Count、Distinct 等,而不必担心创建它们所需的 SQL。我想做的是:
AdventureWorks2008R2Entities AWE = new AdventureWorks2008R2Entities();
var query = AWE.Employees.AsQueryable();
object FieldToQuery = ?;
if (textBox1.Text != "") query = query.Where(x => x.FieldToQuery.Contains(textBox1.Text));
这样的事情有可能以某种方式实现,还是违背了 LINQ 的基本原理?
【问题讨论】:
-
你需要手动构建一个表达式树。
-
您想要做的事情通常不是没有反思的选择。除了在编译时使用访问运算符静态引用它之外,没有简单的方法来引用字段/属性。
-
AdventureWorks2008R2Entities AWE = new AdventureWorks2008R2Entities();- 这就是在 C# 中引入var关键字的原因。 -
@evanmcdonnal 完全不真实。
-
@evanmcdonnal
Expression<Func<Account, bool>> expr = x => x.Name == "Something";。这不是java,伙计。当所有其他选择都用尽时,反思总是最后的手段。
标签: c# linq linq-to-entities