У меня есть класс GreenGroup
, который наследуется от абстрактного Group
. GreenGroup
имеет несопоставленное свойство State
, определенное в частичном классе.
У меня есть метод GetGreenGroups(GroupFilter filter)
, который должен возвращать список объектов GreenGroup, где State == filter.State.
public List<GreenGroup> GetGreenGroups(GroupFilter filter)
{
IQueryable<VirtualMachineInfo> result = GetAllGroupsInternal(userContext);
if(filter.OwnerId != Guid.Empty)
{
result = result.Where(g => g.OwnerID == filter.OwnerId);
}
// this is the unmapped property
if(filter.State.IsNotNullOrEmpty())
{
result = result.Where(g => g.State == filter.State);
}
// This will throw Class Member Unmapped exception
return new List<GreenGroup>(result);
}
Однако, поскольку State
не является полем в базе данных, означает ли это, что я не могу включить его в свой запрос linq, но придется дополнительно фильтровать мой список после того, как запрос вернется?
Я просмотрел несколько сайтов, включая этот один , в котором пользователь получает такое же исключение Class Member unmapped
, но поле находится в его базе данных, поэтому не похоже, что явное приведение поможет меня вышли.
Является ли мой единственный вариант разделить фильтрацию так?
public List<GreenGroup> GetGreenGroups(GroupFilter filter)
{
IQueryable<VirtualMachineInfo> result = GetAllGroupsInternal(userContext);
if(filter.OwnerId != Guid.Empty)
{
result = result.Where(g => g.OwnerID == filter.OwnerId);
}
var groups = new List<GreenGroup>(result);
if(filter.State.IsNotNullOrEmpty())
{
groups = (from g in groups where g.State == filter.State select g).ToList();
}
return groups;
}