[c#]对 LinQ 的简单 SQL 查询,我有试过但尚未解决

标签: Linq SQLServer C#
发布时间: 2017/2/26 14:54:48
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有下面的 SQL Server 查询都必须与它在 LINQ 中,查询简单但我试过几次不能工作。

这里是 SQL 查询

select * 
from td_Accountline 
where 
    BonusPlanID = 1
    and Amount > 0
    and Ord_Sub_ID like '%SMPORD%' 
    and MONTH(Created) = 11
    and YEAR(Created) = 2013  
    and Ord_Sub_ID not in (
        select Ord_Sub_ID 
        from td_Accountline 
        where 
            BonusPlanID =3 and
            Ord_Sub_ID like '%SMPORD%'
    ) 

我已经尝试过此查询,但我仍然是困惑

var account=from acc in currentDB.td_Accountline
                                              where acc.BonusPlan.BonusPlanID == 1 && acc.Amount > 0 && acc.Ord_Sub_ID.Contains("SMPORD") && acc.Created.ToDateTime().Month == 11 && acc.Created.ToDateTime().Year == 2013
                                              let accNot = from accN in currentDatabase.td_Accountline
                                                           where accN.BonusPlan.BonusPlanID == 3 && accN.Ord_Sub_ID.Contains("SMPORD")
                                                           select accN.Ord_Sub_ID
                                              where !accNot.Contains("SMPORD")
                                              select acc; 

我想要一个查询请不单独查询,以降低数据库调用。

解决方法 1:

我认为你几乎没有。而不是:

where !accNot.Contains("SMPORD")

它应该是︰

where !accNot.Contains(acc.Ord_Sub_ID)

你最后的 Linq 查询将︰

var account = from acc in currentDB.td_Accountline
              where 
                acc.BonusPlan.BonusPlanID == 1
                && acc.Amount > 0
                && acc.Ord_Sub_ID.Contains("SMPORD")
                && acc.Created.Month == 11 
                && acc.Created.Year == 2013
              let accNot = from accN in currentDatabase.td_Accountline
                           where 
                            accN.BonusPlan.BonusPlanID == 3
                            && accN.Ord_Sub_ID.Contains("SMPORD")
                            select accN.Ord_Sub_ID
              where !accNot.Contains(acc.Ord_Sub_ID)
              select acc; 
赞助商