gpt4 book ai didi

sql - Linq 自连接组合键

转载 作者:行者123 更新时间:2023-12-02 02:26:35 24 4
gpt4 key购买 nike

请有人帮我解决这个问题。

我有一个需要连接到自身的表。该表包含一个组合键。到目前为止,以下 SQL 语句运行良好。

select * from releases as a inner join
(
select * from releases as r1
where id=50
) as x
on (a.ParentSeriesId = x.SeriesId and a.ParentPeriod = x.Period) OR a.id=50

问题是如何将其转换为 linq。

到目前为止我得出的结果是

from a in Releases
join x in (
(from r1 in Releases
where
r1.Id == 50
select new {
r1
}))
on new { a.ParentSeriesId, a.ParentPeriod, a.Id }
equals new { ParentSeriesId = x.r1.SeriesId, ParentPeriod = x.r1.Period, Id = 50 }
select new{

}

但这会产生以下 SQL 语句

SELECT NULL AS [EMPTY]
FROM [Releases] AS [t0]
INNER JOIN [Releases] AS [t1] ON ([t0].[ParentSeriesId] = [t1].[SeriesId]) AND ([t0].[ParentPeriod] = [t1].[Period]) AND ([t0].[Id] = @p0)
WHERE [t1].[Id] = @p1

问题是我怎样才能使它成为我原来的 SQL 语句。谢谢!!

最佳答案

Linq 只支持等值连接,因为你有一个 OR 尝试下面的两个 'from' 子句

var xQuery = from r in Releases
where r.Id == 50
select r;

var query = from r in Releases
from x in xQuery
where (r.ParentSeriesId == x.SeriesId && r.ParentPeriod == x.Period) ||
r.Id == 50 //r.Id == x.Id
select new
{

}

关于sql - Linq 自连接组合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5661481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com