1
EFエンティティのLinq投影では、必要なプロパティのみを選択できます。Entity FrameworkのLinqネストされた投影
以下のコードでは、ex。今質問にはオプションとしてナビゲーションプロパティがあります。 は私が
options.ToList()
を記述する場合、それはすべてのプロパティで動作します
ネストされたプロパティとしてのみオプションIDとオプションのタイトルを選択します。
私はOptions
がコレクションであることを理解し、私は唯一のOptions.ID
とOptions.Title
が
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();
を含めることにしたい。しかし、このコードは、このc.Options.ToList()
から
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();
オプションを使用すると、特定のインスタンス –
を選択すると、リストから直接プロパティvauleを取得することはできませんリスト型の場合FirstOrdefaultを使用しよう:だから何をやるべきことだけで、これらの2つのプロパティを含む新しいオブジェクトを投影する
.Select
を使用していますオプションがリストオブジェクトであるのはなぜですか?それは必要ですか?リストオブジェクトがある場合、配列内の1つの項目だけを選択してプロパティを取得する必要があります。私は通常、FirstOrDefault:options = new {c.Options.FirstOrDefault()。ID、c.optionsFirstOrDefault()。Title}、 – jdweng