一个获取最小值得的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记录不显示
[解决办法]
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
};
[解决办法]