У меня есть настольная рабочая станция и комментарии. Когда я попросил список рабочих станций, я хотел включить только последний комментарий для рабочей станции. Из-за сокращения данных и производительности. Но я не могу понять, как писать в один запрос. Что именно мне делать?
var workstations = this.context.TWorkstation.Include(x => x.TComments).AsQueryable();
workstations = workstations.SelectMany(x => x.TComments.Max(y => y.CreationDate)).ToList();
В настоящее время ответ выглядит так и содержит id 1 и id2 комментариев. Но он должен содержать только идентификатор 2
"workstation": "workstaionName",
"alias": "alias",
"dns": "ip",
"macAddress": "FF-FF-FF-FF-FF-F",
"comments": [
{
"id": 1,
"text": "test\n",
"creationDate": "2020-11-16T17:41:40.226617",
"modificationDate": "0001-01-01T00:00:00",
"creator": "xxx"
},
{
"id": 2,
"text": "test2",
"creationDate": "2020-11-17T17:41:40.226617",
"modificationDate": "0001-01-01T00:00:00",
"creator": "xxx"
}
],
"creator": "xxx"
Извините, я изо всех сил старался адаптировать ваш ответ, но не смог заставить его работать. Я отредактировал вопрос, чтобы, надеюсь, лучше объяснить, что я пытаюсь заархивировать.
В EF Core 5 вы можете делать следующее:
var workstations = this.context.TWorkstation
.Include(x => x.TComments.OrderByDescending(c => c.CreationDate).Take(1))
.ToList();
рабочие станции.SelectMany(x => x.Select(y => new {param1 = y.param1, param2 = y.param2})).ToList();