2012-04-05 2 views
3

このクエリを適切な方法でエンティティクエリにLinqに変換する手助けができますか?私はLinqにはかなり新しいですし、これらのクエリを適切に記述したいと思います。これは私が知っているイムは、それにUNIONとサブクエリでユニオンクエリをLINQ To Entityクエリに変換する

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 
+0

?それはそれほど難しいことではありません。 Linqには、条項、注文柄、組合などの選択句があります。実際にはまっすぐなポートです。 – Servy

+5

このクエリは注入されています。攻撃で。 – Yuck

+0

あなたはこれのどの部分を苦労していますか? – ridecar2

答えて

1

をやって何のためにかなり関与する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}); 
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}) 
+0

投票はなぜですか? – Habib

+0

助けてくれてありがとうhabib。ここでp.FieldID.Contains(innerquery.SignalFieldID)インナークエリー –

+0

からのプロパティSignalFieldIDへのアクセスがないため、問題が発生しています。@NickLaMarca今すぐ編集したインナークエリーを試してください。 – Habib

関連する問題