用Linq能不能实现这样操作

Leixian 2014-05-28 04:19:51
我有一个分类表,是无限极的分类
如果单纯用SQL的话不好实现分组排列
请问大家用Linq如何对Datatable(或List)操作进行如下排序?

Datatable
SQL
select id,name,parent,sort from class order by parent asc,sort asc

结果:
id name parent sort
1 分类1 0 0
2 分类2 0 1
3 分类3 1 0
4 分类4 1 1
5 分类5 3 0
6 分类6 3 1
7 分类7 3 2

希望通过Linq得到的结果

id name parent sort
1 分类1 0 0
2 分类2 0 1
3 分类3 1 0
5 分类5 3 0
6 分类6 3 1
7 分类7 3 2
4 分类4 1 1

...全文
212 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leixian 2014-06-03
  • 打赏
  • 举报
回复
引用 15 楼 qq4024qq 的回复:
可以用sql实现的。
大哥~~~能稍微具体点么??
蝜蝂 2014-06-02
  • 打赏
  • 举报
回复
可以用sql实现的。
Xuon 2014-06-02
  • 打赏
  • 举报
回复
使用DataRelation http://msdn.microsoft.com/zh-cn/library/system.data.datarelation.nested.aspx 然后结果转XML
Leixian 2014-06-02
  • 打赏
  • 举报
回复
还是继续这个问题吧~~~ 楼上几位朋友的回答着实搞不明白 本人也基本算一从ASP过渡过来的小白 还请大家多多帮忙~~谢谢!呵呵
Leixian 2014-05-29
  • 打赏
  • 举报
回复
引用 10 楼 wanghui0380 的回复:
额,你这不叫啥分组排列,你这叫深度优先 这个需要递归,sql2005以上支持CTE,CTE能帮助你递归完成这种查询 至于你要用linq,当然也没啥问题。google "sp1234 重量级查询"就能找到核心代码 老p这个代码稍微修改一下,把id查找 和parent查找委托出去,基本就能达到你要求地 呵呵,所有地前提都是你自己愿意提升自己,如果你要不愿意自己搞,那就当我没说把
谢谢!!谢谢你的提醒,正在学习中~~~
Leixian 2014-05-29
  • 打赏
  • 举报
回复
引用 9 楼 excute 的回复:
[quote=引用 7 楼 Leixian 的回复:] [quote=引用 5 楼 excute 的回复:] [quote=引用 4 楼 Leixian 的回复:] [quote=引用 3 楼 excute 的回复:] DbContext.class.OrderBy(p => p.parent) as DataTable
DbContext 怎么用啊?谢谢~~[/quote] 类继承:IDataContext[/quote]
using System.Linq;
using System.Web;
using System.Data;
using System.Data.Linq;
using System.Data.Entity;
using System.Text;
using System.Data.SqlClient;
using了这么多也没找到 IDataContext https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/17.gif[/quote] 继承啊,不是引用命名空间 namespace CCFEI.SERVICE { public class AboutService:IDataContext {} }[/quote] 是继承啊,继承也提示缺少引用~~~晕~~~
wanghui0380 2014-05-28
  • 打赏
  • 举报
回复
额,你这不叫啥分组排列,你这叫深度优先 这个需要递归,sql2005以上支持CTE,CTE能帮助你递归完成这种查询 至于你要用linq,当然也没啥问题。google "sp1234 重量级查询"就能找到核心代码 老p这个代码稍微修改一下,把id查找 和parent查找委托出去,基本就能达到你要求地 呵呵,所有地前提都是你自己愿意提升自己,如果你要不愿意自己搞,那就当我没说把
excute 2014-05-28
  • 打赏
  • 举报
回复
引用 7 楼 Leixian 的回复:
[quote=引用 5 楼 excute 的回复:] [quote=引用 4 楼 Leixian 的回复:] [quote=引用 3 楼 excute 的回复:] DbContext.class.OrderBy(p => p.parent) as DataTable
DbContext 怎么用啊?谢谢~~[/quote] 类继承:IDataContext[/quote]
using System.Linq;
using System.Web;
using System.Data;
using System.Data.Linq;
using System.Data.Entity;
using System.Text;
using System.Data.SqlClient;
using了这么多也没找到 IDataContext https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/17.gif[/quote] 继承啊,不是引用命名空间 namespace CCFEI.SERVICE { public class AboutService:IDataContext {} }
zhu3082104111 2014-05-28
  • 打赏
  • 举报
回复
IQueryable<VM_NewBillDataGrid> querys = from assdisdet in assemblyDispatchDetails select new VM_NewBillDataGrid { SubItemID = assdisdet.PartID, PartName = assdisdet.PartName, }; return querys.OrderByDescending(t => t.SubItemID).ThenByDescending(t=>t.PartName);忘有帮助
Leixian 2014-05-28
  • 打赏
  • 举报
回复
引用 5 楼 excute 的回复:
[quote=引用 4 楼 Leixian 的回复:] [quote=引用 3 楼 excute 的回复:] DbContext.class.OrderBy(p => p.parent) as DataTable
DbContext 怎么用啊?谢谢~~[/quote] 类继承:IDataContext[/quote]
using System.Linq;
using System.Web;
using System.Data;
using System.Data.Linq;
using System.Data.Entity;
using System.Text;
using System.Data.SqlClient;
using了这么多也没找到 IDataContext https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/17.gif
by_封爱 版主 2014-05-28
  • 打赏
  • 举报
回复
虽然我没有仔细看 但是我知道
引用 2 楼 excute 的回复:
dt.OrderBy(p => p.parent).ToList();
肯定不对.. 虽然 我看不出来 你要实现的东西 到底有什么规则... 我到现在也不知道你下面的表是按照什么来排序的.
excute 2014-05-28
  • 打赏
  • 举报
回复
引用 4 楼 Leixian 的回复:
[quote=引用 3 楼 excute 的回复:] DbContext.class.OrderBy(p => p.parent) as DataTable
DbContext 怎么用啊?谢谢~~[/quote] 类继承:IDataContext
Leixian 2014-05-28
  • 打赏
  • 举报
回复
引用 3 楼 excute 的回复:
DbContext.class.OrderBy(p => p.parent) as DataTable
DbContext 怎么用啊?谢谢~~
excute 2014-05-28
  • 打赏
  • 举报
回复
DbContext.class.OrderBy(p => p.parent) as DataTable
excute 2014-05-28
  • 打赏
  • 举报
回复
DbContext.class.OrderBy(p => p.parent).ToList();
Leixian 2014-05-28
  • 打赏
  • 举报
回复
最好是返回的还是Datatable

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧