C# 具有多个from子句的linq查询的方法语法

C# 具有多个from子句的linq查询的方法语法,c#,linq,C#,Linq,我试图找出如何将嵌套的from子句替换为方法语法。我尝试了.Select或.SelectMany,但没有得到相同的结果 var query = (from DirectToStoreStore s in dtsOrder.Stores from DirectToStoreProduct p in s.Products where p.DirectToStoreOrderLineID == dire

我试图找出如何将嵌套的from子句替换为方法语法。我尝试了.Select或.SelectMany,但没有得到相同的结果

  var query = (from DirectToStoreStore s in dtsOrder.Stores
                        from DirectToStoreProduct p in s.Products
                        where p.DirectToStoreOrderLineID == directToOrderLineID
                        select p);

你可以用很多方法来写

var query = dtsOrder.Stores.Cast<DirectToStoreStore>()
    .SelectMany(s => s.Products.Cast<DirectToStoreProduct>()
        .Where(p => p.DirectToStoreOrderLineID == directToOrderLineID)
    );
var query=dtsOrder.Stores.Cast()
.SelectMany(s=>s.Products.Cast()
.Where(p=>p.DirectToStoreOrderLineID==directToOrderLineID)
);
虽然强制转换可能不是必需的,但它们只是在查询中显式声明之后才存在。移除它们可能是安全的