Linq Left Join为所有集合返回重复的相同行

时间:2013-10-22 00:50:47

标签: sql linq entity-framework

我的linq为所有集合

返回所有重复的相同行

在DB中运行SQL:

select top 20 * from t1
left join t2
on t1.sid= t2.sid
 and t1.pid=t2.pid
where(t2.sid is null and t1.pid='r')

我可以得到20行不同的结果。

然后我写Linq:

    Entities dbconn = new Entities();
    List<t1> myResult = (
        from t1Data in dbconn.t1
        join t2Data in dbconn.t2
        on new     { sid = (int)t1.sid,    pid= t1.pid}
        equals new { sid= (int)t2.sid, pid= t2.pid}
        into joinSet
        from joinUnit in joinSet.DefaultIfEmpty()
        where (joinUnit == null) && (t1.pid== "r")
        select t1Data 
        ).Take(20).ToList();

结果的所有行都是某一行。

1 个答案:

答案 0 :(得分:1)

select t1Data错误,因为t1Data来自原始数据集。

而是选择加入的结果:select joinSet