У меня есть стол Installation
, который может содержать один или несколько Equipements.Linq: пусть результат подсчета в указанную колонку
И по функциональным причинам я перезаписал свой стол Installation
и добавил поле NbrEquipements
.
Я хочу, чтобы заполнить это поле Linq
, но я застрял ...
Благодаря специальные причин, нет никакой связи между ними с таблицами. Итак, нет члена Installation.Equipements
в мой класс. Поэтому нет Installation.Equipements.Count
...
Я пробую кое-что. Вот мой код:
var query = RepoInstallation.AsQueryable();
// Some filter
query = query.Where(i => i.City.RegionId == pRegionId));
int?[] etatIds = { 2, 3 };
query = (from i in query
select new Installation
{
NbrEquipements= (from e in RepoEquipement.AsQueryable()
where e.InstallationSpecialId == i.SpecialId
&& (etatIds.Contains(e.EquEtat))
select e.SasId
).Count()
});
Но это попробовать, я получил эту ошибку:
The entity or complex type 'myModel.Installation' cannot be constructed in a LINQ to Entities query
Я пробовал некоторые другие вещи, но я всегда оборачиваясь ...
Еще одна вещь, которая может быть полезна для меня: было бы здорово заполнить поле под названием Equipements
, которое является List<Equipement>
. После этого я смог бы Count
этот список ... Возможно ли это?
Скажите, если я не ясно.
Заранее благодарен.
Вот окончательный код:
//In the class:
[Dependency]
public MyEntities MyEntities { get; set; }
//My Methode code:
var query = MyEntities .SasInstallations.AsQueryable();
// Some filter
query = query.Where(i => i.City.RegionId == pRegionId));
var liste = new List<Installation>();
var queryWithListEquipements =
from i in query
select new
{
Ins = i,
EquipementsTemp = (from eq in MyEntities.Equipements.AsQueryable()
where eq.SpecialId == i.SpecialId
&& (etatIds.Contains(eq.SasEquEtat))
select eq
).ToList()
};
var listWithListEquipements = queryWithListEquipements.ToList();
foreach (var anonymousItem in listWithListEquipements)
{
var ins = anonymousItem.Ins;
ins.Equipements = anonymousItem.EquipementsTemp;
ins.NumberEquipements = ins.Equipements.Count();
liste.Add(ins);
}
return liste;
Кстати, это очень и очень быстро (даже перечисление Equipements). Так что я работаю именно так, как мне хотелось. Еще раз спасибо за вашу помощь!
Вы хотите получить только «NbrEquipements»? или все свойства 'Installation' plus' NbrEquipements'? –
Я хочу все свойства установки плюс NbrEquipements. – Grimness
Просто создайте подтип 'Installation'. –