C# 返回限制字段的linq到sql加载

C# 返回限制字段的linq到sql加载,c#,linq,C#,Linq,是否有方法使用LoadWith,但指定返回的字段 例如,如果我有两个表1)产品2)类别 然后做一些类似的事情 DataLoadOptions dlo = new DataLoadOptions(); dlo.LoadWith<Products>(d => d.Categories); db.LoadOptions = dlo; MyDataContext db = new MyDataContext(); var result = from d in db.Products

是否有方法使用LoadWith,但指定返回的字段

例如,如果我有两个表1)产品2)类别

然后做一些类似的事情

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Products>(d => d.Categories);
db.LoadOptions = dlo;

MyDataContext db = new MyDataContext();
var result = from d in db.Products
             select d;
DataLoadOptions dlo=newdataloadoptions();
dlo.LoadWith(d=>d.Categories);
db.LoadOptions=dlo;
MyDataContext db=新的MyDataContext();
var结果=以db.乘积表示的d
选择d;
在探查器中检查查询时,我看到Categories表中的所有行都被返回。我真正需要的是“Name”字段


我知道我可以使用联接重写查询,但我需要将结果集作为“产品”数据类型返回,这就是我使用LoadWith的原因。

不,这在LoadWith中是不可能的


您可以尝试在投影中使用嵌套查询,但这样做会很慢:每个父项一个查询(因此每个加载的产品一个相关类别的查询)

可以使用投影,但之后需要处理anynomus类型

select new {Order = order, ProductName = order.Product.Name,
             CustomerName = order.Customer.Name,
             OrderType = order.OrderType.Name } // etc