linq to sql LoadWith返回限制字段

时间:2009-01-19 06:51:48

标签: 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
             select d;

当我在profiler中检查查询时,我看到正在返回Categories表中的所有行。我真正需要的只是“名称”字段。

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

2 个答案:

答案 0 :(得分:1)

使用LoadWith是不可能的。

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

答案 1 :(得分:0)

您可以使用投影,但在此之后需要处理匿名类型

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