Entity Framework asp.net mvc5 - Невозможно преобразовать лямбда-выражение в тип 'string', потому что это не тип делегата - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь сделать

IList<Sth> sths= Context.Sth.Where(g => g.IsX == true && g.Y.Name== "name").ToList();  //here it successfully compares  g.Y.Name
            foreach (Sth g in sths)
            {
                Context.Entry(g).Collection(g=>g.Y).Load(); //the exception is thrown here
                this.mylist.Add(g.Y.Id);
            }

Я уже пробовал

using System.Data.Entity;
using System.Linq;

.

1 Ответ

0 голосов
/ 17 декабря 2018

g.Y не является коллекцией, иначе вы не сможете набрать g.Y.Name в первой строке.Поэтому вы должны либо использовать Reference вместо коллекции, либо лучше использовать Include вместо.Например:

IList<Sth> sths = Context.Sth
    .Where(g => g.IsX == true && g.Y.Name== "name")
    .Include(g => g.Y)
    .ToList(); 

this.mylist.AddRange(sths.Select(g => g.Y.Id);

Но если все, что вы пытаетесь сделать, получит свойство Id, то вы можете просто сделать это:

this.mylist.AddRange(Context.Sth
    .Where(g => g.IsX == true && g.Y.Name== "name")
    .Select(g => g.Y.Id));
...