使用linq将1对多关系转换为查找
本文关键字:关系 转换 查找 linq 使用 | 更新日期: 2023-09-27 18:11:29
在我的数据库中,我有一个条目,它定义了一对多的关系。
我只想要一个简单的Lookup
通过集合关系(s)。
简单的例子:
汽车的值(如制造商和类型)在同一个表中,属性(如颜色、马力、引擎)在另一个表中定义。(这只是一个例子,从数据库的角度来看没有意义)。
所有我想要的是选择所有的汽车从例如Ford
作为查找他们的属性,但我不明白这一点。
目前我有
dbContext.Cars
.Where(c => c.Manufacturer == "Ford")
.Select(c => new {
c.Type,
Attributes = c.Attributes.Select(a => new{
a.Value
})
})
.ToLookup(arg => arg.Attributes.Select(a => a.Value), arg => arg.Type);
,但是这对于组合的
会产生一个奇怪的查找我需要像
这样的查找[500hp] : {Type1,Type2}
[300hp] : {Type3,Type6}
[green] : {Type3,Type7}
[blue] : {Type2,Type1}
我认为你需要的是SelectMany
:
dbContext.Cars
.Where(c => c.Manufacturer == "Ford")
.SelectMany(c => c.Attributes.Select(a =>new { c.Type, a.Value }))
.ToLookup(arg => arg.Value, arg => arg.Type);