当前位置:编程学习 > C#/ASP.NET >>

求实现多对多查询的思路

现在有产品(Product){PID,PName}和产品分类(Category){CID,CName}为多对多的关系,有一个中间表假设为(PC){PID,CID}。现在我需要查询到Product对应的所有产品分类的名称,用逗号分隔。能否使用SQL语句直接实现。或者使用Entity Framework 实现。可以使用导航属性获取Product中的PCs,现在我想使用一个匿名类型将产品信息和对应的分类名称查询出来:比如(PID1,PName1,{CName1,CName2……}) SQL Entity Framework 多对多 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 1 楼 q107770540 的回复:
var query=db.PC.GroupBy(pc=>pc.Product.PID)
               .Select(g=>new {PID=g.Key,PName=g.First().Product.PName,CName=string.Join(",",g.Select(x=>x.Categroy.CName).ToArray())});
提示“方法“First”只能用作最终查询操作。请考虑在该实例中改用方法“FirstOrDefault”。” --------------------编程问答--------------------
引用 1 楼 q107770540 的回复:
var query=db.PC.GroupBy(pc=>pc.Product.PID)
               .Select(g=>new {PID=g.Key,PName=g.First().Product.PName,CName=string.Join(",",g.Select(x=>x.Categroy.CName).ToArray())});
改为FirstOrDefault后,出现“LINQ to Entities 不识别方法“System.String Join(System.String, System.String[])”,因此该方法无法转换为存储表达式。” --------------------编程问答-------------------- var query=db.PC.GroupBy(pc=>new{pc.Product.PID,pc.Product.PName}).ToList()
               .Select(g=>new {PID=g.Key.PID,PName=g.Key.PName,CName=string.Join(",",g.Select(x=>x.Categroy.CName).ToArray())}); --------------------编程问答--------------------
引用 4 楼 q107770540 的回复:
var query=db.PC.GroupBy(pc=>new{pc.Product.PID,pc.Product.PName}).ToList()
               .Select(g=>new {PID=g.Key.PID,PName=g.Key.PName,CName=string.Join(",",g.Select(x=>x.Categroy.CName).ToArray())});
虽然不成功,但是还是谢谢您的耐心解答。提示“未将对象引用设置到对象的实例。 ”
请问有没有这方面的资料? --------------------编程问答-------------------- 这个问题认真思考。很多相似。 --------------------编程问答-------------------- 这个问题我确定我会,显然40分太少了,这是EF里最难写的查询之一,因为很明显楼主的数据中存在空对应,不是所有产品都被分类了,EF处理这种情况非常复杂。
估计楼主也不在了,闪人。 --------------------编程问答--------------------
引用 7 楼 bianwo 的回复:
这个问题我确定我会,显然40分太少了,这是EF里最难写的查询之一,因为很明显楼主的数据中存在空对应,不是所有产品都被分类了,EF处理这种情况非常复杂。
估计楼主也不在了,闪人。
既然会的话还望不吝赐教,分数可能分配的不合理,还望见谅! --------------------编程问答-------------------- 除
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,