C# 在c中使用实体框架和linq连接两个表#

C# 在c中使用实体框架和linq连接两个表#,c#,sql-server,entity-framework,linq,C#,Sql Server,Entity Framework,Linq,我试图在c#中组合两个表以进行订单管理。其中“SalesOrderDetails”表返回逗号分隔的产品代码和数量 “SalesOrder”表返回订单详细信息。 我已经编写了存储过程 ALTER procedure [dbo].[SP_GetAllOrders] AS BEGIN SELECT SalesOrder.OrderDate, SalesOrder.OrderTitle, SalesOrder.OrderPriority, Customer.Lna

我试图在c#中组合两个表以进行订单管理。其中“SalesOrderDetails”表返回逗号分隔的产品代码和数量

“SalesOrder”表返回订单详细信息。 我已经编写了存储过程

ALTER procedure [dbo].[SP_GetAllOrders] 
AS
BEGIN


SELECT
    SalesOrder.OrderDate,
    SalesOrder.OrderTitle,
    SalesOrder.OrderPriority,
    Customer.Lname,
    Customer.Fname,
    OrderType.OrderTypeName,
    (
        SELECT
            CAST( ProductCode AS varchar ) + ':' + CAST( Quantity AS varchar ) + ','
        FROM
            SalesOrderDetails 
        WHERE
            SalesOrderDetails.SalesOrderId = SalesOrder.SalesOrderId
        FOR xml path('')
    ) AS 'Product'
FROM
    SalesOrder
    INNER JOIN Customer ON SalesOrder.CustomerId = Customer.CustomerId
    INNER JOIN OrderType ON SalesOrder.OrderTypeId = OrderType.OrderTypeId

END
它给了我完美的输出。没有使用存储过程的情况下,我想要相同的输出。 我希望使用实体框架、linq和c#asp.net获得相同的输出。我被困在这里了

这就是我尝试过的

TrainingDemoEntities实体=新的TrainingDemoEntities()


您应该使用LINQ查找一些示例联接并首先尝试,然后向我们展示您所完成的工作。你不能只是来这里索要代码。我不仅仅是索要代码。我已经尝试了许多不同的方法@armindoos你的数据库设置了外键关系?EF是否利用了这种关系?如果它在您的计算机上计算联接而不是在SQL中进行计算,那么效率会很低。我已经很久没有使用LINQ了。我的理解是问题在于逗号分隔的列表。您不能使用两个单独的查询并在之后连接结果吗?您不应该在SQL中生成CSV,因为这是交叉关注点(数据检索和表示):SQL(或Linq)应该只关注获取原始数据,只有后续的C#代码应该将其转换为CSV表示。
    var details = (from order in entity.SalesOrders
                   join cust in entity.Customers
                   on order.CustomerId equals cust.CustomerId
                   join ordertypevalue in entity.OrderTypes
                       on order.OrderTypeId equals ordertypevalue.OrderTypeId
                   select new
                   {
                       orderId = order.SalesOrderId,
                       orderDate = order.OrderDate,
                       orderTitle = order.OrderTitle,
                       orderPriority = order.OrderPriority,
                       orderType = order.OrderType,
                       productstr = string.Join(",", (from prod in entity.SalesOrderDetails
                                                      where prod.SalesOrderId == order.SalesOrderId
                                                      select prod.ProductCode + ":" + prod.Quantity))
                   }).ToList();