3

誰かがこのクエリをLinqtoentitiesクエリに適切な方法で変換するのを手伝ってもらえますか?私はLinqにかなり慣れていないので、これらのクエリを適切に記述したいと思います。これは、UNIONとその中のサブクエリで何をしているのかについてはかなり複雑です。

SELECT pf.FileID, pf.ServerName, pf.MigrationType 
FROM pOrders pf 
WHERE pf.FileID IN (select GCMFileID FROM Signals
                    where SignalFileID = " + FileID + ")
UNION 
SELECT pf.FileID, pf.ServerName, pf.MigrationType
FROM pOrders pf 
WHERE pf.FileID = " + FileID + "
order by pf.MigrationType desc
4

3 に答える 3

1

コメント見たけど…

var signalIds = Signals.Where(s => s.SignalFileId = FILEID).Select(x => x.GCMFileID ).ToArray();

pOrders.Where(pf => signalIds.Contains(pf.FileID))
.Union(
pOrders.Where(pf => pf.FileID == FILEID))
.OrderByDescending(u => u.MigrationType)
.Select(u => new {u.FileID, u.ServerName, u.MigrationType});
于 2012-04-05T14:34:52.353 に答える
0
var innerquery = from t in db.Signals
                 where t.SignalFileID == FileID
                 select new {t.SignalFieldID};
var query = (from p in db.pOrders
            where p.FieldID.Contains(innerquery.SignalFieldID)
            select new {p.FileID, p.ServerName, p.MigrationType}).Union
            (from p in db.pOrders
            where p.FieldID ==FieldID
            orderby p.MigrationType
            select new {p.FileID, p.ServerName, p.MigrationType})
于 2012-04-05T14:36:11.247 に答える