由于某种原因,我不喜欢 linq 作为查询接口,并且前段时间开始创建一个 sql 生成库。看看 LambdaSql。目前它包含select
子句和where
过滤器的基本场景。已经支持设置字段、where、group by、have、order by、joins、嵌套查询。稍后将支持插入、更新和删除。它还包含一些扩展现有行为的要点。例如Limit
使用这种方式实现。
例子:
var qry = new SqlSelect
(
new SqlSelect<Person>()
.AddFields(p => p.Id, p => p.Name)
.Where(SqlFilter<Person>.From(p => p.Name).EqualTo("Sergey"))
, new SqlAlias("inner")
).AddFields<Person>(p => p.Name);
Console.WriteLine(qry.ParametricSql);
Console.WriteLine("---");
Console.WriteLine(string.Join("; ", qry.Parameters
.Select(p => $"Name = {p.ParameterName}, Value = {p.Value}")));
输出:
SELECT
inner.Name
FROM
(
SELECT
pe.Id, pe.Name
FROM
Person pe
WHERE
pe.Name = @w0
) AS inner
---
Name = @w0, Value = Sergey
在这里查看更多https://github.com/Serg046/LambdaSql