【发布时间】:2021-11-01 10:02:06
【问题描述】:
数据库
Cars | CarDetails | Owners
----------------------------------
Id | CarDetailId | Id
Name | CarId | CarId
Type | CarId | OwnerName
| | PhoneNumber
LINQ 代码
var intiQuery = from c in Cars
join cd in CarDetails
join o in Owners
select new { c,cd,o}
var results = from qry in intiQuery
group new { qry.c, qry.cd, qry.o} by qry.c.Id into g
select new
select new { CarId= g.Key,
Name = g.Select(g=>g.c.Name).FirstOrDefault(),
Type = g.Select(g=>g.c.Type).FirstOrDefault(),
Price= g.Select(g=>g.cd.Price).FirstOrDefault(),
OwnerName= g.Select(g=>g.o.OwnerName).FirstOrDefault(),
PhoneNumber= g.Select(g=>g.o.PhoneNumber).FirstOrDefault(),
}
我的问题只是在调用此查询时如何提高性能,正如您对每个字段所见,我需要 .Select().FirstOrDefault() 来获取相应的数据。如果假设我有 100 个数据,我将需要一个一个地获取数据 500 次,显示数据需要很长时间。
额外信息,以防有人不清楚。
Cars
Id |Name |Type
-----------------------------------
1 |Toyota |Family
CarDetails
CarDetailId | CarId | Price
-----------------------------------
1 | 1 | 200000
Owners
Id| CarId | OwnerName | PhoneNumber
-----------------------------------
1 | 1 | Mitch | 48774800
2 | 1 | Camilo | 87404078
我想要得到的结果是这样的希望你们中的一些人能有一个更清晰的画面
CarId| Name | Type | Price |OwnerName |PhoneNumber
----------------------------------------------------------------------
1 | Toyota | Family | 200000 | Mitch,Camilo | 48774800,87404078
【问题讨论】:
-
为什么使用交叉连接而不是简单的内/左连接?该查询没有任何意义,因为它是当前编写的。实际上,我什至不确定是否可以编译
-
@MitchWheat@CamiloTerevinto 请再读一读我的问题,更新 Ty。
标签: c# performance linq model-view-controller