如何在不使用join-on-equals-into子句的情况下在C#LINQ中对对象执行左外连接?有没有办法用where条款做到这一点?正确的问题:对于内连接很容易,我有这样的解决方案
List<JoinPair> innerFinal = (from l in lefts from r in rights where l.Key == r.Key
select new JoinPair { LeftId = l.Id, RightId = r.Id})
Run Code Online (Sandbox Code Playgroud)
但对于左外连接我需要一个解决方案.我是这样的,但它不起作用
List< JoinPair> leftFinal = (from l in lefts from r in rights
select new JoinPair {
LeftId = l.Id,
RightId = ((l.Key==r.Key) ? r.Id : 0
})
Run Code Online (Sandbox Code Playgroud)
JoinPair是一个类:
public class JoinPair { long leftId; long rightId; }
Run Code Online (Sandbox Code Playgroud) 如何使用LINQ to SQL执行CROSS JOIN?
我有一个linq连接查询wriiten,我想取值,如果其中一个是空的...
码:
var Details =
UnitOfWork.FlightDetails
.Query()
.Join
(
PassengersDetails,
x => x.Flightno,
y => y.FlightNo,
(x, y) => new
{
y.PassengerId,
y.classType,
x.Flightno,
x.FlightName,
}
);
Run Code Online (Sandbox Code Playgroud)
我想用...
"Above query".DefaultIfEmpty
(
new
{
y.PassengerId,
y.classType,
string.Empty,
string.Empty
}
);
Run Code Online (Sandbox Code Playgroud)
"FlightDetails"是类上的Idatarepository类型,"PassengerDetails"是可查询的局部变量结果.如何获得乘客ID和Classtype的结果,并且整体结果中不包含flightno和flightname.
如何在编写SQL查询的Linq中使用左联接?
select
p.Name, p.Family,
E.EmployTypecode, E.employtypeName, E.EmplytyppeTye
from
personnel as p
left join
Employee as E on E.EmployTypecode = p.EmployTypecode
Run Code Online (Sandbox Code Playgroud) 我用多个JOIN(包括一个LEFT JOIN)写了这个SQL请求.
它给了我预期的结果.
SELECT DISTINCT c.Id,
c.Title,
COUNT(v.Id) AS 'Nb_V2',
COUNT(DISTINCT v.IdUser) AS 'Nb_V1',
r.cnt AS 'Nb_R'
FROM TABLE_C c
JOIN TABLE_V v on c.Id = v.Id
LEFT JOIN (
SELECT Id, COUNT(*) AS cnt
FROM TABLE_R
GROUP BY Id
) r ON c.Id = r.Id
WHERE c.IdUser = '1234'
GROUP BY c.Id, c.Title, r.cnt
Run Code Online (Sandbox Code Playgroud)
但是,'Id喜欢Linq等同于此请求,将它放在我的应用程序的数据访问层.
我尝试过类似的东西:
var qResult = from c in dbContext.TABLE_C
join v in dbContext.TABLE_V on c.IdC equals v.IdC
join r in …Run Code Online (Sandbox Code Playgroud) 这里有一个问题:LEFT OUTER JOIN in LINQ,但这是专门询问的有关 Linq-to-Objects 的问题。这个问题是关于 Linq-to-Entity 的。
我有一个内部联接,我想将其变成外部联接:
alumni = alumni.Join(_context.AlumniSurvey, a => a.Uid, s => s.Uid, (a, s) => new { a, s })
.Where(x => x.s.UniversityNumber != x.s.Uid)
.Select(x => x.a);
Run Code Online (Sandbox Code Playgroud)
并不是说我只是回国的校友;我包含 AlumniSurvey 是因为我将根据用户在索引视图中选择的内容执行各种 where 子句