我有 EF實體:Appeal
,AppealPerson
,Person
。從LINQ連接表中連接列
Appeal
和Person
實體可以通過AppealPerson
實體加入(多對多關係)。 我想選擇具有連接人員全名的申訴。
+----------+----------+--------------------------------------------------+
| AppealId | Appeal.* | Person.Surname + Person.Name + Person.MiddleName |
+----------+----------+--------------------------------------------------+
| 1 | ..info.. | Aaa Aaa Aaa, Bbb Bbb Bbb, Ccc Ccc Ccc |
+----------+----------+--------------------------------------------------+
| 2 | ..info.. | Aaa Aaa Aaa, Bbb Bbb Bbb |
+----------+----------+--------------------------------------------------+
現在,我使用這個查詢:
context.Appeals
.Select(a => new
{
Appeal = a,
Persons = a.AppealPersons
.Select(ap => ap.Person)
.Select(p => new { p.Surname, p.Name, p.MiddleName })
.ToList()
})
.AsEnumerable()
.Select(a => new
{
Id = a.Appeal.Id,
Persons = a.Persons.Select(p => string.Format("{0} {1} {2}", p.Surname, p.Name, p.MiddleName).Trim()),
})
.ToList<object>();
這個查詢是很慢的。列出在30秒內生成的約500行。 請幫助優化查詢。
你檢查SQL - 探查?它會生成一個sql查詢還是爲每個上訴做一個查詢? –