Sam*_*mmm 11 c# linq string var
我是LINQ的新手,需要一些编码方面的帮助.
目前,我有一个字符串和一个var变量.
string temp = "from product in myEntities.Products where product.Name.Contains(_Name) select product";
var _Products = temp;
LvProducts.DataSource = _Products;
LvProducts.DataBind();
Run Code Online (Sandbox Code Playgroud)
基本上,我想要做的是能够通过预先将其分配到字符串中来创建自定义/复杂的LINQ查询.完成编写后,我将字符串分配给var变量.但是,这显然是行不通的.因此,任何人都可以帮助我吗?
Geo*_*ord 18
你有几个选择:
使用Dynamic Linq 库可以动态构建查询.入门的最佳位置是阅读ScottGu的博客文章.但是,我不认为这些库支持您的示例中的contains方法.这是一篇博客文章,解释了如何添加此支持.
直接执行SQL语句.查看Linq to Sql或Linq to Entities的MSDN文档.
var _Products = myEntities.ExecuteStoreQuery<Product>
(@"SELECT * FROM Products WHERE [Name] In ('Item1', 'Item2')");
Run Code Online (Sandbox Code Playgroud)使用Linq的可组合行为.这可能不是最优雅的解决方案,但如果您没有太多选项,它可以很好地工作.您可以在多个部分构建查询.
var _Products = from product in myEntities.Products
select product
_Products = from product in _Products
where product.Name.Contains(_Name)
select product
if FilterByPrice {
_Products = from product in _Products
where product.Price > 100
select product
}
Run Code Online (Sandbox Code Playgroud)你可以通过在一些c#中使用CodeDomProvider编译这个Linq来实现这一点 - 为.NET应用程序添加脚本功能 - 但这是一个非常重要的解决方案.如果你想了解更多关于如何做到这一点,那么看看LinqPad - http://www.linqpad.net - 作者邀请你使用反编译器看看它是如何工作的!
如果要求只是简单的条款,那么除了替代方案可能是使用Dynamic Linq - 请参阅Scott Gu的帖子和Microsoft的示例代码 - http://weblogs.asp.net/scottgu/archive/2008/01/07 /dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
Mar*_*gco -3
您可以将其视为动态 SQL,将语句创建为字符串并将其解析为 SQL 语句。
既然您已经在代码中,为什么不直接在其中编写语句呢?如果使用 Lambda 而不是传统的 linq,会容易很多。我的2美分。
| 归档时间: |
|
| 查看次数: |
36587 次 |
| 最近记录: |