关于今天做项目时遇到的问题 以及解决办法
来源:互联网 发布:南京聚铭网络怎么样 编辑:程序博客网 时间:2024/04/30 04:02
数据库中有张表名为:stCategory 意为分类表结构如下
因为要做无限级分类所以用CategorySSID对应上一级的ID 一级分类默认CategorySSID为0
现在要实现在表里新增一个临时字段名为ParentName 因为不在数据库里新增字段了所以我们的Linq应该怎么写呢?
首先理清思路我们可以用left join 左连接先形成一张表名A1 用CategorySSID对应ID 可以取出如图上的10条记录,因为一级分类CategorySSID为0所以没有对应的肯定取不出来。所以应该对一级分类单独操作用条件筛选出来 where CategorySSID=0 形成第二张表A2。
这时候其实已经完成一半了,剩下的只需要将两表合并。可是两表怎么合并呢。。我sql和Linq都写了。Sql中依旧还是用左连接不过这次不用相依的对应left join on A1.ID=A2.ID 在表里因为ID是唯一的不可能有相同的,所以实际上做的是把2张表合并....在Linq中我是用的
Union(合并)
说明:连接不同的集合,自动过滤相同项;延迟。即是将两个集合进行合并操作,过滤相同的项。
首先2张表结构必须相同 A1和A2实际都是stCategory表。所以直接合并没有关系。但是如果结构不同的话必须使他们结构相同。
例如A1表里我还新增了一个字段 就是上述所说的临时字段名为ParentCategoryName 可是A2表里没有怎么办?我们可以伪造一个 让它是空的就行了。我们筛选的A2表数据都是一级分类的CategorySSID都为0不影响我们之间的操作。
下面贴上Linq和Sql的实现代码。
Sql:
SELECT a.ID, a.CategoryName, a.CategoryDescripition, a.CategorySSID, a.CreatDatetime, a.ModifyDateTime, b_1.PartName AS ParentCategoryNameFROM wsdCategory AS a LEFT OUTER JOIN (SELECT a.ID, a.CategoryName, a.CategoryDescripition, a.CategorySSID, a.CreatDatetime, a.ModifyDateTime, b.CategoryName AS PartName FROM wsdCategory AS a INNER JOIN wsdCategory AS b ON a.CategorySSID = b.ID) AS b_1 ON a.ID = b_1.IDORDER BY b_1.CategorySSID, a.CategorySSID, b_1.CreatDatetime DESC, a.CreatDatetime
Linq:
(from p in WsdCategories join pp in WsdCategories on p.CategorySSID equals pp.ID select new { List = p, PartName = pp.CategoryName }).Union( (from pp in WsdCategories where pp.CategorySSID.Equals(0) select new { List = pp, PartName = "" }))
- 关于今天做项目时遇到的问题 以及解决办法
- 前段时间做项目中,遇到的问题以及解决办法的总结(一)
- Maven构建部署项目遇到的各种问题以及解决办法
- 关于操作access遇到的问题以及解决办法
- SSM做项目时遇到的问题
- 关于flex在做项目中遇到的问题
- 最近做网页前端项目时遇到的一些问题以及解决方案
- 总结今天遇到的问题以及解决方法
- 做项目时遇到的几个关于C#和SQL的细节问题(一)
- 做项目时遇到的几个关于C#和SQL的细节问题(二)
- 今天遇到一个问题,关于ibatis的
- 做东西时遇到的一些问题以及解决方法~
- 初学Oracle时遇到的一点问题以及解决办法
- ros indigo安装时遇到的问题以及解决办法
- windows64 装PIL时遇到的问题以及解决办法
- Openswan中遇到的问题以及解决办法
- 发送邮件遇到的问题以及解决办法
- urlscheme白名单问题以及项目适配iOS9遇到的一些问题及解决办法
- java中接收ICMP??????????????
- xcode 4.5.2 免证书真机调试 生成ipa 教程
- C#.net实现动态绑定TreeView
- Ubuntu创建启动器图标
- hdu 2544 dijkstra最短路
- 关于今天做项目时遇到的问题 以及解决办法
- 2013你好~
- 最小堆
- 拒绝闪退!让iOS应用从容地崩溃
- jreechart - (5)TimeSeriesChart时序图
- jsp中利用jfreechart实现统计效果图--柱图
- c/c++ main 函数命令行参数的使用 知识小结
- Cocos2d-X Basics
- iOS推送通知