如何将 sql 查询转换为 linq LEFT OUTER JOIN

埃尔文

这是返回我需要的数据的 SQL 查询:

SELECT 
    E.DESCS AS EMP, C.USERNAME,
    (SELECT A.DESCS 
     FROM CAD_COLABORADOR H, CAD_DEPT A 
     WHERE H.DEPT = A.ID AND H.ID = C.ID) AS DEPT,
    D.IDENTIFICADOR, D.MODELO, O.DESCS AS OFFICE,
    D.K_OFFICE AS 'KEY OFFICE', S.DESCS AS SO, D.K_SO AS 'KEY SO'
FROM 
    IN_DESKTOP D 
LEFT OUTER JOIN 
    CAD_COLABORADOR C ON D.ID = C.DESKTOP
INNER JOIN 
    CAD_EMP E ON D.EMP = E.ID
INNER JOIN 
    CAD_OFFICE O ON D.V_OFFICE = O.ID        
INNER JOIN 
    CAD_SO S ON D.V_SO = S.ID ;

这是我正在使用的 linq 表达式 plus 有一些不一致之处,因为它返回的大多数数据与 SQL 查询不完全相同:

var result = from desk in db.IN_DESKTOP
             join co in db.CAD_COLABORADOR on desk.id equals co.id into egroup
             from co in egroup.DefaultIfEmpty()
             join e in  db.CAD_EMP on desk.emp equals e.id
             join o in db.CAD_OFFICE on desk.v_office equals o.id 
             join s in db.CAD_SO on desk.v_so equals s.id
             select new
                    {
                            Empresa = e.descs,
                            UserName = co.username,
                            Departamento = co.CAD_DEPT.descs,
                            Identificador = desk.identificador,
                            Modelo = desk.modelo ,
                            Offices = o.descs,
                            KeyOfice =  desk.k_office,
                            KeySo = desk.k_so
                    };
伊恩·弗莱明

C# 中的左外连接只是一个 GroupJoin 后跟一个 SelectMany,如果为空则默认 - 我一直在将此扩展用于 lambda 表达式

public static class LinqExtension
{
    public static IEnumerable<TResult> LeftOuterJoin<TLeft, TRight, TKey, TResult>(
        this IEnumerable<TLeft> leftCollection, IEnumerable<TRight> rightCollection, 
        Func<TLeft, TKey> leftKey, Func<TRight, TKey> rightKey,
        Func<TLeft, TRight, TResult> result)
    {
        return leftCollection.GroupJoin(rightCollection,
                leftKey,
                rightKey,
                (leftObject, rightObject) => new { leftObject, rightObject })
            .SelectMany(x => x.rightObject.DefaultIfEmpty(), 
                (l, r) => new { left = l.leftObject, right = r })
            .Select(x => result.Invoke(x.left, x.right));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将SQL(LEFT OUTER JOIN)转换为LinQ

来自分类Dev

使用 LEFT OUTER JOIN 将 SQL 转换为 LINQ

来自分类Dev

如何将sql multimple LEFT JOIN转换为linq

来自分类Dev

将LEFT OUTER JOIN查询转换为Django ORM queryset / query

来自分类Dev

如何将此LEFT JOIN Linq查询转换为Lambda表达式

来自分类Dev

Oracle 11g XE:如何将LEFT SQL JOIN转换为使用半联接和相关查询的查询?

来自分类Dev

如何在LINQ to SQL中编写右侧为null的LEFT OUTER JOIN?

来自分类Dev

如何在LINQ to SQL中编写右侧为null的LEFT OUTER JOIN?

来自分类Dev

如何将SQL查询转换为LinQ

来自分类Dev

如何将sql限制查询转换为linq lambda?

来自分类Dev

如何将 SQL 多表查询转换为 Linq

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

来自分类Dev

使用COALESCE和LEFT OUTER JOIN的SQL查询

来自分类Dev

如何用等效的LEFT OUTER JOIN替换复杂的SQL MINUS查询

来自分类Dev

SQL JOIN和LEFT OUTER JOIN

来自分类Dev

将SQL查询转换为LINQ查询

来自分类Dev

如何将sql内部联接查询转换为linq转换为sql查询并转换为列表

来自分类Dev

如何将 SQL 运算符转换为 LINQ“IN”Join

来自分类Dev

如何将SQL转换为Linq

来自分类Dev

将SQL Join查询转换为Laravel

来自分类Dev

将SQL查询转换为LINQ

来自分类Dev

将SQL查询转换为LINQ语句

来自分类Dev

使用WHERE子句的SQL LEFT OUTER JOIN

来自分类Dev

SQL COUNT()函数和LEFT OUTER JOIN

来自分类Dev

如何从sql查询转换为linq

来自分类Dev

Linq To SQL LEFT JOIN(OR语句)

来自分类Dev

如何在Entity Framework Core中使用Join()方法将Sql查询转换为Linq及其等效项

来自分类Dev

如何编写RIGHT OUTER JOIN和LEFT OUTER JOIN的组合

来自分类Dev

如何将此查询从sql转换为linq-to-entities

Related 相关文章

热门标签

归档