从TSQL切换到LINQ
本文关键字:LINQ TSQL | 更新日期: 2023-09-27 18:05:39
我正试图将下面的TSQL转换为LINQ。我显然不是很擅长这个,也不知道如何在Linq中进行连接。我的困惑不仅仅是简单的表达。在我的基本用途,我的结果集是一个类,当然代表表行…但是连接不会有这种一对一的比例,所以我必须创建一个自定义结果集吗?
TSQL:
SELECT
SimEA.*,
SimE.*
FROM
dbo.SSimEmailsAdressees SimEA
JOIN dbo.SSimEmails SimE ON
SimEA.EmailID = SimE.EmailMsgID
WHERE
SimEA.UserId = var
我最接近的一次:
this.GetAll<SSimEmails>()
.Where(e => e.SSimEmailsAdressees.Any(p => p.UserId.ToString() == usrID));
返回的对象当然是被查询的单个表的模拟对象。所以我需要帮助获得连接添加,我猜我必须创建一个返回对象这样吗?
this.GetAll<MyJoinResultsObject>......
我认为你应该这样写:
var q =
from SimEA in SSimEmailsAdressees
where SimEA.UserId = usrID
join SimE in SSimEmails on SimEA.EmailID equals SimE.EmailMsgID
into joinSimE
from SimE in joinSimE.DefaultIfEmpty()
select new { EmailID = SimEA.EMailID, UserId = SimEA.UserId, OtherField = SimE.OtherField };
var result = from ea in SimEA
join e in SimE
on ea.EmailID equals e.EmailMsgID
where ea.UserId = userId
select new { properties you want here or new object based on properties}