linqからSQLクロスが適用されます
-
29-09-2019 - |
質問
LINQのユーザー定義のテーブル値関数にクロスを適用してクエリを作成したいと思います。 SQLは以下のように非常に簡単です:
SELECT *
FROM MyTable mt
CROSS APPLY MyTVF(mt.id)
これ 投稿は、Cross適用と外側の適用の両方を含む生成されたSQLをもたらすLinqクエリの例を示しますが、TVFではなくサブクエリのみを使用します。 これ 記事では、LinqからSQLが「関係ナビゲーション」のCross ApplyおよびOuter Applyオペレーターを生成し、このコンテキストでそれが何を意味するのかわかりません。 これ 投稿では、私がやりたいことをほぼ説明しています。答えは、これを行う唯一の方法は、SQLクエリをストアドプロシージャでラップし、LINQ経由でSPを呼び出すことです。複数のLINQクエリのアプリケーション全体でこの方法で使用できるTVFが実際に必要なので、これが真実ではないことを願っています。 LINQを介して上記の単純なSQLステートメントのようなものを取得する方法を知っている人はいますか?
解決
これはどう:
from mt in db.MyTable
from mf in db.MyTVF (mt.id)
select new { mt.Blah, mf.Blah }
他のヒント
var query = ActivityRepository.Where(p => p.iAction > -1 && userIds.Contains(p.iSellerId)).GroupBy(c => c.iSellerId).Select(c => c.OrderByDescending(cc => cc.dBeginTime).First()).Select(a => new ActivityInfo
{
ActivityId = a.iActivityId,
StartTime = a.dBeginTime,
SellerId = a.iSellerId,
EndTime = a.dEndTime,
ActivityName = a.sName,
});
キーポイントは次のとおりです。.Select(c => c.orderbydescending(cc => cc.dbegintime).first()))
所属していません StackOverflow