Pregunta

Me gustaría crear una consulta con un centro al aplicar en una función de valor de tabla definida por el usuario en LINQ. El SQL sería realmente bastante simple como a continuación:

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

Este poste da un ejemplo de una consulta LINQ que los resultados en el SQL generado que contiene tanto una cruz se aplican y aplicar un exterior pero sólo para una consulta sub no para un tvf. Este artículo confirma que LINQ a SQL generará cruz aplicar y aplicar externa operadores para "navegaciones de relaciones", pero no estoy seguro de lo que eso significa en este contexto. Este post describe más o menos lo que yo quiero hacer y la respuesta dice que la única manera de hacer esto es para envolver la consulta SQL en un procedimiento almacenado y luego llamar al SP a través de LINQ. Espero que esto no es cierto porque en realidad necesito un tvf que se puede utilizar de esta manera a lo largo de una aplicación en múltiples consultas LINQ por lo que "se envuelve en un sp" no funcionaría para mí. ¿Alguien sabe de una manera de conseguir algo así como la sencilla instrucción SQL anterior a través de LINQ?

¿Fue útil?

Solución

¿Qué tal esto:

from mt in db.MyTable
from mf in db.MyTVF (mt.id)
select new { mt.Blah, mf.Blah }

Otros consejos

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

el punto clave es: .Seleccionar (c => c.OrderByDescending (cc => cc.dBeginTime) .First ())

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top