J'essaie d'inclure un type anonyme comme ceci: je veux tous les attributs incomelist
en plus de CompanyTitle
, PeriodTypeName
)
var incomeList = ctx.IncomeLists.Include(i => new
{
CompanyTitle = i.CompanyId.ToString() + "/" + i.Company.CompanyName,
PeriodTypeName = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
}).ToList()
mais j'obtiens l'exception suivante:
L'expression Inclure le chemin doit faire référence à une propriété de navigation définie sur le type. Utilisez des chemins en pointillés pour les propriétés de navigation de référence et l'opérateur Sélectionner pour les propriétés de navigation de la collection. Nom du paramètre: chemin
Le résultat doit être la source de données de Gridview.
Vous ne pouvez pas utiliser Inclure pour sélectionner des données comme celle-ci. Inclure est utilisé pour charger les données liées. Vous devez charger vos entités en utilisant Inclure puis sélectionner ce que vous voulez. N'oubliez pas de supprimer . ToString () de CompanyId. EF le fera pour vous. Votre requête devrait ressembler à ceci:
var incomeList = ctx.IncomeLists
.Include(i => i.Company)
.Include(i => i.ListPeriods.Select(lp => lp.PeriodType))
.Select(i => new
{
CompanyTitle = i.CompanyId + "/" + i.Company.CompanyName,
PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
})
.ToList();