0

以下の TSQL を取得して LINQ に変換しようとしています。私は明らかにこれが苦手で、Linq に参加する方法がわかりません。私の混乱は、単純な表現だけではありません。私の基本的な用途では、結果セットはもちろんテーブル行を表すクラスですが、結合にはこの 1 対 1 の比率がないため、カスタム結果セットを作成する必要がありますか?

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

2 に答える 2

1

次のように書くとよいと思います。

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 }; 
于 2013-03-23T10:48:12.147 に答える
0
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}
于 2013-03-23T10:52:13.947 に答える