Это сценарий. У меня есть следующие три класса, они определены в Entity Framework, я определяю их здесь только для примера:
public class Foo
{
public string Color { get; set; }
}
public class Bar : Foo
{
public string Height { get; set; }
}
public class Pipe : Foo
{
public string Width { get; set; }
}
Итак, у меня есть много Foo, это мой базовый класс, я хочу иметь возможность указать свойство и выполнить этот запрос:
from e in Context.Foos
group e.Color by e.Color into result
select new
{
Value = result.Key,
ValueCount = result.Count()
}
Это должно закончиться:
Синий 2
Черный 4
Желтый 2
Это работает, однако я хочу указать это во время выполнения, когда имя свойства «Цвет» передается клиентом. Кроме того, я хочу искать производные объекты тоже. Если я попытаюсь сделать
group e.Height by e.Height into result
Это не сработает, потому что нет высоты в Foo, только в баре. Но дело в том, что я ТОЛЬКО хочу вернуть столбцы, это также должно быть указано во время выполнения. Это главная проблема, с которой я столкнулся. Я не могу сделать Foos.OfType<Bar>.GroupBy(some dynamic stuff)
, потому что я не знаю тип для фильтрации во время выполнения.
Был бы очень признателен за помощь в этом вопросе.
EDIT
По сути, я пытаюсь сделать следующее: System.LINQ.Dynamic: Выбрать ("new (...)") в список (или любую другую перечисляемую коллекцию ) но в конце вернуть Count вместо Sum.