Проблема приведения LINQ-to-entity
Я пытаюсь отфильтровать запрос LINQ-to-entity общим способом, но получаю сообщение об ошибке. Вот кусок кода:
private IQueryable<T> FilterDeletedEntities<T>(IQueryable<T> entities)
{
if (typeof(IDeletable).IsAssignableFrom(typeof(T)))
{
var deletableEntities = (IQueryable<IDeletable>)entities;
deletableEntities = deletableEntities.Where(entity => !entity.Deleted);
entities = (IQueryable<T>)deletableEntities;
}
return entities;
}
По сути, я пытаюсь отфильтровать удаленные объекты (т. Е. Поле «Удалено» равно «истина»), если и только если объект является IDeletable (т. Е. У него есть поле «Удалено»). Проблема в том, что я не могу привести IQueryable <IDeletable> обратно к IQueryable <T>.
Есть какие нибудь идеи как это починить? И прежде чем спросить: да, этот методимеет быть общим.
Заранее спасибо!