2

このSQLクエリをLINQに変換する必要があります

SELECT *
FROM 
    parcels p
    LEFT JOIN leases l ON p.parcels_pk = l.parcels_fk
WHERE 
    l.parcels_fk IS NULL 
    AND p.parcels_pk NOT IN (SELECT parcels_fk FROM application_parcels)
ORDER BY parcel

これを試しました:

var qry = from p in db.Parcels
          join l in db.Leases on p.Id equals l.pk_parcel
          where l.pk_parcel == null 
                && !(from ap in db.ApplicationParcels 
                     select ap.ParcelId).Contains(p.Id)
                     orderby p.Name
4

1 に答える 1

3
             // SELECT * FROM parcels
var result = from p in parcels
             // LEFT JOIN leases ON p.parcels_pk = l.parcels_fk
             join llj in leases on p.parcels_pk equals llj.parcels_fk into lj
             from l in lj.DefaultIfEmpty()
             // WHERE l.parcels_fk IS NULL
             where l.parcels_fk == null
             // AND p.parcels_pk NOT IN (...)
               && !application_parcels.Any(x => x.parcels_fk == p.parcels_pk)
             // ORDER BY [p.]parcel
             order by p.parcel
             select new { parcel = p, lease = l };

あなたのスキーマが正しいと仮定します。

しかし、将来的には:

  • 最初にあなたが試したことを提供してください(努力を示してください)。
  • LINQPad を見てください。とても役に立ちます。
于 2013-10-09T20:34:39.900 に答える