首先,一般我们要解决表中数据多对多的问题,一般是这样的做法:
使用外键相关联,然后如果想通过左表访问到所有与之关联的右表数据,只需要查出中间表与左表对应的Id的数据即可。
如果是直接写SQL就是一个in查询运算符即可,但是LINQ中是没有现成的方法的,我们需要手动来实现一个。
///获取所有的Id集合
List<int> proIdList = Context.BLLSession.MerPdtRelation.Where(c => c.mId == Context.MatNow.Id).Select(c => c.pId).ToList();
///然后获取Id集合中的有的元素的集合
List<wProdcuts> datCnt = Context.BLLSession.wProdcuts.Where(c => proIdList.Contains(c.Id)).ToList();上面代码的关键也就是第一个查询语句的Select操作和第二个Contains操作。
如果我们把它写成相应的linq语句,则是:
IEnumerable<int> proLst = from item in Context.BLLSession.MerPdtRelation where item.mId == Context.MatNow.Id select item.pId;
IEnumerable<wProdcuts> outResult= from item in Context.BLLSession.wProdcuts where proLst.Contains(item.Id) select item;一般SQO标准查询运算符是LINQ语句是可以相互转换的,大家在使用的时候就因人而异了。
本文介绍如何利用LINQ处理数据库中多对多的关系,包括如何获取关联表中的ID集合,并通过这些ID集合查询对应的数据。文章提供了具体的C#代码示例。
4825

被折叠的 条评论
为什么被折叠?



