[C#]从使用 LInq 的间接子表的访问数据

发布时间: 2017/2/27 1:01:25
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下表中我的数据库和 im 通过 EF 访问它们。

TestPack { id, name, type }
Sheets{ id, tp_id, date, rev }
Spool { id, sheet_id, date, rev, fabricated, installed }

这意味着测试包了 1 万张,每张有 1 米线轴。我想要总线轴的测试包,计数和计数的线轴捏造的安装的线轴的计数。

我怎么做,通过 Linq 查询?

解决方法 1:

如果我理解正确,你想要这样的事情

 (from tp in ctx.TestPack
        join st in ctx.Sheets on st.tp_id equals tp.id
        join sl in ctx.Spool on sl.steet_id equals st.id
        where tp.id == testPackId //you can change or delete this condition
        select new {
          Total = sl.Count() , 
          FabricatedSpools = sl.Count(x=>x.fabricated == true),
          InstalledSpools = sl.Count(x=>x.installed == true)
     }).FisrtOrDefault();

或者也许

 (from tp in ctx.TestPack
    join st in ctx.Sheets on st.tp_id equals tp.id
    join sl in ctx.Spool on sl.steet_id equals st.id
    where tp.id == testPackId //you can change or delete this condition
    select new {
      Total = sl.Count() , 
      FabricatedSpools = (from s in sl
        where s.fabricated == true    
        select s.Count()),
      InstalledSpools = (from i in sl
        where i.installed== true    
        select i.Count()),
 }).FisrtOrDefault();
官方微信
官方QQ群
31647020