سؤال

أرغب في إنشاء استعلام مع تطبيق تقاطع في وظيفة قيمة الجدول المحددة للمستخدم في LINQ. ستكون SQL بسيطة إلى حد ما على النحو التالي:

SELECT *
FROM MyTable mt
CROSS APPLY MyTVF(mt.id)

هذه يعطي Post مثالًا على استعلام LINQ الذي ينتج عنه SQL الذي تم توليده يحتوي على كل من التقاطع وتطبيقه الخارجي ولكن فقط للحصول على استعلام فرعي ليس لـ TVF. هذه تؤكد المقالة أن LINQ إلى SQL ستقوم بإنشاء تطبيق المتقاطع وتطبيق المشغلين الخارجيين على "التنقل العلمي" لكنني لست متأكدًا مما يعنيه ذلك في هذا السياق. هذه يصف Post إلى حد كبير ما أريد القيام به ، وتقول الإجابة إن الطريقة الوحيدة للقيام بذلك هي لف الاستعلام SQL في إجراء مخزن ثم اتصل بـ SP عبر LINQ. آمل أن يكون هذا غير صحيح لأنني في الواقع بحاجة إلى TVF يمكن استخدامه بهذه الطريقة خلال تطبيق في استعلامات LINQ متعددة ، لذا فإن "لفه في SP" لن يعمل بالنسبة لي. هل يعرف أي شخص طريقة للحصول على شيء مثل بيان SQL البسيط أعلاه عبر LINQ؟

هل كانت مفيدة؟

المحلول

وماذا عن هذا:

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,
        });

Keypoint هي:.select (c => c.orderByDescending (cc => cc.dbegintime) .first ())

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top