2016-12-27 65 views
0

我在我的应用程序中使用linq编写我的子查询。我在sql server中写了我的sql子查询。当我在SQL Server中执行此查询的结果给予完善和SQL查询会像如何在mvc5中使用linq编写子查询?

我的SQL Server:

select Row_Number() Over(OrderBy Mmname) as Sno,Mmname,Mmcardno,Mmdob,MmEmail,(Select SUM(MSSRNETAMT) from MSCAS where MSCAS.MSSFORMNO = MSMEM.MmCardno and MSCAS.MSSRBILLDT between '01/01/2016' and '30/12/2016') Billopen,(Select SUM(MSSRNETAMT) from MSCAS where MSCAS.MSSFORMNO = MSMEM.MmCardno and MSCAS.MSSRBILLDT between '01/01/2016' and '30/12/2016') BillForm,Mmredpv,Msdval,Mmcontact,Mmdate,Mmaddr,MmCuser,MmCuserdt,Mmusercd, 
    Mmuser,Mmuserdt,Cast(Mmcntrn as int) as Mmcntr from MSMEM inner join MSSCHEDET on MSMEM.Mschuid = MSSCHEDET.MSDID 

我的LINQ查询

   Var query = (from Ms in db.msmems join Mss in db. Msschedet on Ms. Mechuid equals mss. MSDID select new 
     { 
      name = Ms. Mmname, 
      Billopen = (from mc in db. MSCAS where Ms.  Mmcardno = mc. Mssformno) select mc.MSSRNETAMT); 
    }): 

这只是我试过,但我我得到的错误是打开它是金额我得到错误

这是我的SQL查询。我试图在linq中转换这个sql查询。但是我失败了很多次,我得到了一个错误。

+0

你有什么Linq代码,你有什么错误? – halfer

回答

0

你能试试这样的事吗?如果没有更好地理解你的表格结构,我会优化它。是否没有理由不能第二次加入你的MSCAS表?

var query = (from Ms in db.msmems 
      join Mss in db.Msschedet on Ms.Mechuid equals mss.MSDID 
      join Mc in db.MSCAS on Ms.Mmcardno equals Mc.Mssformno 
      select new { 
         name = Ms.Mmname, 
         Billopen = Mc.where(x=>x.MSSRBILLDT >= '01-01-2016' and x.MSSRBILLDT <= '12-30-2016').Sum(z=>z.MSSRNETAMT) 
         } 
      );