我有三个实体,有许多/许多关系:
产品-< Products_vehicles >-车辆
1产品可以有许多车辆。
1汽车可以有多种产品
与所有许多/多个关系一样,products_vehicles类是隐藏的,通过EF显示为实体上的导航属性,所以我的类如下所示:
public partial class product
public int id { get; set; }
public string part_name { get; set; }
public virtual ICollection<vehicle> vehicles { get; set; }
public partial class vehicle
{
public int id { get; set; }
public string make { get; set; }
public string model { get; set; }
public virtual ICollection<product> products { get; set; }我可以很容易地得到产品和所有相关的车辆。
我希望根据汽车的型号对产品进行分组,这样我的输出就会如下所示:
产品编号:5 part_name:车门制造:福特车型: focus
产品编号:5 part_name:车门制造:萨博型号: 9-3
这个是可能的吗?
更新
为了更清晰起见,下面是一个例子:
假设我有一个叫做“帽子”的产品,它适用于5种不同的车辆:
目前,我得到了一个集合的车辆列出所有5个以上的产品。
我要他们分组,第一,‘部分名称’(帽子),其次‘制造’和第三‘模式’。结果应该是:
Bonnet > Ford, Fiesta 2L
Ford, Fiesta 1.6L
Bonnet > Ford, Mondeo 2L
Ford, Mondeo 1.8L
Bonnet > Ford, Focus 1.6L这在SQL中是非常简单的,但是我很难用Linq来解决这个问题。
任何帮助都非常感谢
发布于 2015-03-31 16:02:40
我猜您想要的是检索已选择的平面记录:产品id、产品部件名称、汽车制造商和车辆型号。如果没有,请忽略这个答案。
return dbcontext.products.SelectMany(
p => p.vehicles.Select(
v => new {
product_id = p.id,
part_name = p.part_name,
make = v.make,
model = v.model
}
)
);如果您不想重复产品数据(实际上是非常推荐的),那么您可以对嵌套的vehicles数组使用以下方法:
return dbcontext.products.Select(
p => new {
product_id = p.id,
part_name = p.part_name,
vehicles = p.vehicles.Select(
v => new { make = v.make, model = v.model }
}
);dbcontext.products是与数据库中的产品相对应的DbSet;它在代码中可能被不同的调用。
干杯~!
https://stackoverflow.com/questions/29372069
复制相似问题