In einer Linq-Projektion für eine EF-Entity kann ich nur die Eigenschaften auswählen, die benötigt werden.Linq verschachtelte Projektionen in Entity Framework
Im folgenden Code ex Fragen. Jetzt hat Frage Navigationseigenschaft als Optionen. Ich möchte nur die Möglichkeit id und Option Titel als verschachtelte Eigenschaft
wählen Wenn ich
options.ToList()
schreiben, wird es mit allen Eigenschaften arbeiten.
Ich möchte nur Options.ID
und Options.Title
zu
var query = from c in context.Sec_Questions.AsNoTracking()
where c.IsActive == true
select new
{ c.ID, c.QuestionType,
c.Title, c.ControlName,
c.IsNumberOnly,
c.Maxlenghth,
options = c.Options.ToList(),
c.IsMultiple,
c.ControlID,
c.HelpText,
c.IsRequired };
var questions = query.ToList();
Aber dieser Code funktioniert nicht
var query = from c in context.Sec_Questions.AsNoTracking()
where c.IsActive == true
select new
{ c.ID, c.QuestionType,
c.Title, c.ControlName,
c.IsNumberOnly,
c.Maxlenghth,
options = new { c.Options.ID, c.options.Title },
c.IsMultiple,
c.ControlID,
c.HelpText,
c.IsRequired };
var questions = query.ToList();
Versuch FirstOrDefault zu verwenden, wenn die Optionen Listentyp ist nicht Eigentum vaule direkt aus der Liste mit der Auswahl bestimmte Instanz bekommen –
Warum ist Optionen ein Listenobjekt? Muss es sein? Wenn Sie ein Listenobjekt haben, müssen Sie nur ein Element im Array auswählen, um die Eigenschaften zu erhalten. Ich verwende normalerweise FirstOrDefault: options = new {c.Options.FirstOrDefault(). ID, c.optionsFirstOrDefault(). Titel}, – jdweng