У меня возникла проблема с методом Select
в моем методе репозитория, когда я пытаюсь использовать определенные типы возвращаемых данных.с использованием селектора в репозиториях структуры сущности
Метод вместилище, где я имею вопрос является:
public IEnumerable<T> List(Expression<Func<T, bool>> filter = null,
string include = "",
int Taked = 0, Expression<Func<T, T>> selector = null)
{
IQueryable<T> query = dbSet;
if (filter != null)
query = query.Where(filter);
#region Stringleri İnclude Eder
foreach (var includeProperty in
include.Split(new char[] {','},
StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
#endregion
if (selector != null)
query = query.Select(selector);
if (Taked != 0)
return query.Take(Taked).ToList();
return query.ToList();
}
internal DbContext context;
internal DbSet<T> dbSet;
Я хочу вернуть мой класс сущностей с помощью метода выше, но я хочу только некоторые свойства должны быть заполнены. Я попробовал следующий подход:
AdminWork workunit = new AdminWork();
IEnumerable<AdminMenu> adminMenus = workunit.Menu.List(x => x.Online == true,
selector: z => new AdminMenu
{
MenuID = z.MenuID,
Name = z.Name,
Path = z.Path
});
Который бросает исключение:
AdminMenu не может быть построена в LINQ к Entities запрос
Я также попытался следующий подход, но это требуется вернуть IEnumerable<int>
:
IEnumerable<AdminMenu> menus = workunit.Menu.List(x => x.Online == true,
selector: z => z.MenuID);
Мой вопрос в том, как я могу создать новые экземпляры моего класса объектов в linq для объектов, поэтому не каждое свойство заполняется.
Можете ли вы показать определение переменной 'dbSet'? И можете ли вы расширить «проблемы с возвратом»? – Colin