首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

一个获取最小值得的LINQ有关问题

2012-05-28 
一个获取最小值得的LINQ问题A表a_ida_namea_isdel1服装02家电13日化0B表b_ida_idb_name b_isdel11风衣121

一个获取最小值得的LINQ问题
A表 
a_id a_name a_isdel
1 服装 0
2 家电 1
3 日化 0

B表
b_id a_id b_name b_isdel
1 1 风衣 1
2 1 裤子 0
3 2 电视 0
4 2 冰箱 0
5 3 肥皂 0
6 3 牙膏 0

表结构是这样的 A 表是B表的分类




想要显示结果为
a_id a_name b_name 
1 服装 裤子
3 日化 肥皂


想得到 每个分类中一条B表记录,这个记录是这个分类中b_id最小的

而且  
a_isdel 为1代表已经删除,删除的分类不显示
b_isdel为1代表已经删除,删除的B记录不显示
   



[解决办法]

C# code
var query=from a in A          join b in B          on A.a_id equals b.a_id          where a.a_isdel==0 && b.b_isdel==0          group b by b.a_id into g          select new           {              a_id=g.Key,              a_name=A.SingleOrDefault(c=>c.a_id==g.Key).a_name,              b_name=g.OrderBy(c=>c.b_id).FirstOrDefault().b_name          };//代码手写 谨提供思路参考
[解决办法]
猫哥写的很好啊
[解决办法]
var result = from u in db.TableA
from n in db.TableB
where u.a_id == n.a_id && u.a_isdel == 0 && n.b_isdel == 0
group n by n.a_id into g
select new
{
a_id = g.Key,
a_name = db.TableA.SingleOrDefault(c => c.a_id == g.Key).a_name,
b_name =g.FirstOrDefault(c=>c.b_id==(g.Min(t=>t.b_id))).b_name
};
[解决办法]
探讨

C# code

var query=from a in A
join b in B
on A.a_id equals b.a_id
where a.a_isdel==0 && b.b_isdel==0
group b by b.a_id into g
select new
……

热点排行