linq - 尝试将交叉连接 transact-sql 转换为 LINQ

标签 linq t-sql cross-join

我正在尝试了解这个交叉连接(我以前从未见过的东西),以便我可以转换为 LINQ。我不太确定它想做什么:

Select various a,b,c,d, and e columns
From Fee a
inner Join FeeCategory b on a.CategoryID = b.FeeCategoryID
inner join FeeCompanyType c on a.FeeID = c.FeeID
cross join FeeType e
left outer join FeeTypeLink d on a.FeeID = d.FeeID and e.FeeTypeID = d.FeeTypeID

var q = (
    from fees in Session.Query<Fee>()
    join feeCategories in Session.Query<FeeCategory>() on fees.FeeCategory.Id equals feeCategories.Id
    join feeCompanyType in Session.Query<FeeCompanyType>() on fees.Id equals feeCompanyType.Fee.Id
**erm.....**
)

大脑崩溃了,感谢任何帮助......

最佳答案

对于交叉连接,只需添加另一个来自:

from fees in Session.Query<Fee>()
//cross join:
from feetypes in Session.Query<Session.Query<Fee>()
join ...
join ...
// left join:
join feetypelink in Session.Query<FeeTypeLink>() on 
new {fees.FeeID,feetypes.FeeTypeID} equals new{feetypelink.FeeID,feetypelink.FeeTypeID} 
into gr
from res in gr.DefaultIfEmpty() .....

关于linq - 尝试将交叉连接 transact-sql 转换为 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244908/

相关文章:

c# - LINQ 查找一系列连续数字

sql - 设置 SQL 查询格式以不同方式显示

sql-server - 使用分隔符将字符串拆分为数组,获取 SELECT 语句中倒数第二个元素

sql-server - 交叉连接后跟左连接

matlab - 如何以编程方式从多个一维元胞数组的笛卡尔积(又名 "cross-join")生成数据集对象?

C# LinQ 条件排序

c# - 动态更改月份列表

c# - 接口(interface)列表与派生类型列表 - 无法将表达式类型转换为返回类型

sql - 使用TSQLUNIT进行SQL单元测试: don't you need to duplicate your SQL code?

sql-server - sql cross join - 有人发现它有什么用?