【发布时间】:2012-06-14 07:03:15
【问题描述】:
我正在开发一个小框架来访问数据库。我想添加一个使用 lambda 表达式进行查询的功能。我该怎么做?
public class TestModel
{
public int Id {get;set;}
public string Name {get;set;}
}
public class Repository<T>
{
// do something.
}
例如:
var repo = new Repository<TestModel>();
var query = repo.AsQueryable().Where(x => x.Name == "test");
// This query must be like this:
// SELECT * FROM testmodel WHERE name = 'test'
var list = query.ToDataSet();
// When I call ToDataSet(), it will get the dataset after running the made query.
【问题讨论】:
-
linqpad.net 可以帮助你。
-
您应该使用启用 LINQ over Expressions 的 O/RM 框架,例如 LINQ to SQL 或实体框架。
-
你想实现query provider吗?
-
@sinanakyazici:编写自己的查询提供程序非常复杂!不要浪费你老板的钱写你自己的。无论如何你都会失败。只需使用 Entity Framework (.NET 3.5) 的第一个版本(并了解 EF1 有多糟糕)即可了解编写自己的引擎以允许将表达式树转换为 SQL 是多么复杂。
-
要了解 LINQ 的深度,请观看this。
标签: c# linq lambda asqueryable