0

我再次重写我的问题,我没有以正确的方式暴露它,对不起。

我有这个 SQL 查询:

SELECT T1.*, T2.documentNumber
FROM TABLE1 T1      
LEFT JOIN TABLE2 T2 ON      
    T2.documentNumber = (
        SELECT TOP 1 documentNumber         
        FROM TABLE2  
        WHERE description = T1.description)                                     
WHERE T1.color = 'RED';

我需要T1用相应的T2.documentNumber值检索按颜色过滤的所有行,但是唯一的T1行,我的意思是,与 1 到 1 的关系T2

T1T2通过description列相关。因为description在 中不是唯一的t2,所以该表可以包含具有相同描述的 N 行,因为我只希望每T1行的结果为 1 行,所以我通过唯一列 ( documentNumber) 获得前 1 个过滤。

这个查询对我来说很好,我想知道是 Linq-to-SQL 的等价物,我尝试了几个小时但没有成功。有人可以帮我吗?

4

1 回答 1

2

尝试

var result = table1.Where(t1 => t1.color == "RED")
                   .GroupJoin(table2,
                              t1 => t1.description,
                              t2 => t2.description,
                              (t1,g) => new {
                                              T1 = t1,
                                              DocumentNumber = g.FirstOrDefault()
                                             });

强制性 101 链接:http ://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b应该有助于处理这类查询......

于 2012-11-13T16:07:38.157 回答