对于构造sql出来的查询结果集, 如何对象化访问?

[ 2008-01-19 16:32:37 | 作者: progame ]
文字大小: | |

如果只是绑定到列表控件, 那么出来的datatable已经足够了, 但有时候一些查询的结果集, 是用来做中间计算的, 这样带来的问题就是必须以columnindex或columnname去访问datarow取得数据, 而且还有DBNull的问题存在, 当然另外还有部分数据库不支持Guid列, 返回结果只是varchar这种情况, 凡此种种, 导致了对结果集的访问非常麻烦.

但是匿名类型(anonymous type)横空出世后, 这个问题但可以得到一定的改观了, 虽然仍然没有DLinQ那么帅的形式, 但好歹可以对象化访问结果集了:
q.Select(a.OrderID, a.OrderDate, b.OrderDate.As("date"), a.OrderNo)
.From(a).As("a")
.InnerJoin(b).As("b")
.On(a.OrderNo == b.OrderNo);

sql = q.Sql;
ds = s.Query(q);

var orderentry = new
{
 Orderid = QueryFactor.GuidField,
 OrderDate = QueryFactor.DateField,
 Date = QueryFactor.DateField,
 OrderNo = QueryFactor.StringField
};

var list2 = QueryFactor.ToList(ds.Tables[0], orderentry);

foreach (var e in list2)
{
 Console.WriteLine("{0}, {1}, {2}, {3}", e.Orderid, e.OrderDate, e.Date, e.OrderNo);
}

评论Feed 评论Feed: /feed.asp?q=comment&id=1454

这篇日志没有评论.

发表
表情图标
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:   (非注册用户不需要输入密码) 注册?
验证码(不区分大小写) * 请输入验证码