从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>......

从TSQL切换到LINQ

我认为你应该这样写:

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}