質問

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()))

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top