SDQ 是我在 2004的时候看了Linq有感而发的作品,当时主要是为了开发一个对OPS有极强支持能力的O/RM工具。开发工具是:VS.NET 2003
我今天下载了C# 9.0 快速开发版之后,认真的找了些Linq的资料查看(以前,主要是概念性的接触,从Cw开始)。发现SDQ 3.0 版本与Linq的部分语法相当的相似。以下是两种代码:
SDQ CODE::
SQRun sq = new SQRun();
sq.From(res)
.InnerJoin(link,).On(res.RSID ==link.RSID)
.InnerJoin(pkg).On(pkg.PGID ==link.LK_OBJT_ID)
.Where(pkg.R_PGID == Package.DEFINE)
.And(PKG.Level == 2)
.Select();
sq.From(res)
.InnerJoin(link,).On(res.RSID ==link.RSID)
.InnerJoin(pkg).On(pkg.PGID ==link.LK_OBJT_ID)
.Where(pkg.R_PGID == Package.DEFINE)
.And(PKG.Level == 2)
.Select();
LINQ CODE::
IEnumerable expr = names
.Where(s => s.Length == 5)
.OrderBy(s => s)
.Select(s => s.ToUpper());
.Where(s => s.Length == 5)
.OrderBy(s => s)
.Select(s => s.ToUpper());
但是真正让我惊讶的是下面的代码:
SDQ CODE::
public static QCondition operator ==(QColumn col, object val)
...{
return new QCondition(col, " = " + V1(val));
}
......
QCondition q = QUser.PUID == 12;
...{
return new QCondition(col, " = " + V1(val));
}
......
QCondition q = QUser.PUID == 12;
LINQ CODE::
Func filter = s => s.Length == 5;
SDQ 的条件连接,就是通过许多的 QCondition 实例组合的结果.
让我有点儿津津自喜的感觉啊.我用VS.NET 2003 实现了类型的效果,而且设计思路与先进的Linq同啊.哈哈.
在几天前,我都在考虑在DLINQ出来后,我的SDQ是不是应该要死掉了.但是在学习LINQ的过程当中,再进一步确认:是想办法让DLinq来支持我的OPS,还是让SDQ在数据库查询方法比DLinq更强.