Linq加入的大于条件

Nap*_*Nap 28 linq conditional join

我试图有条件地加入两个表,但它给了我语法错误.我试图在网上找到解决方案,但我找不到如何用条件进行条件连接.唯一的另一种选择是从一个表中获取值,然后再次进行查询.

我只是想确认是否有其他方法可以使用linq进行条件连接.

这是我的代码,我试图找到所有等于或低于我的位置.基本上我想得到我的同龄人和下属.

from e in entity.M_Employee
join p in entity.M_Position on e.PostionId >= p.PositionId
select p;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 44

你不能用LINQ连接做到这一点 - LINQ只支持equijoins.但是,您可以这样做:

var query = from e in entity.M_Employee
            from p in entity.M_Position
            where e.PostionId >= p.PositionId
            select p;
Run Code Online (Sandbox Code Playgroud)

或者稍微替代但等效的方法:

var query = entity.M_Employee
                  .SelectMany(e => entity.M_Position
                                      .Where(p => e.PostionId >= p.PositionId));
Run Code Online (Sandbox Code Playgroud)


mic*_*czy 6

下列的:

from e in entity.M_Employee
from p in entity.M_Position.Where(p => e.PostionId >= p.PositionId)
select p;
Run Code Online (Sandbox Code Playgroud)

将产生与您所追求的完全相同的 SQL (INNER JOIN Position P ON E..PostionId >= P.PositionId).