У меня есть Person объект:GroupBy с тройным оператором
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
public double Height { get; set; }
public bool IsTest { get; set; }
}
Тогда у меня есть список, заполненный различные Person
объектов.
Я хочу знать, есть ли способ использовать тернарный оператор с GroupBy в LINQ в зависимости от некоторого свойства объекта. Например:
var groupedPersons = persons.GroupBy(person => person.IsTest ?
new {
person.Name,
person.Age,
person.Address
}
: new {
person.Name,
person.Age,
person.Address,
person.Height}).ToList();
Но, к сожалению, не работает, дает мне исключение,
Тип условного выражение не может быть определена, потому что нет нет неявного преобразования между «AnonymousType # 1» и «AnonymousType # 2 '
Возможно ли это вообще и как?
Благодаря
EDIT: Пытались, но не работает.
var groupedPersons = persons.GroupBy(person => person.OnTest ?
new Person {
Address = person.Address,
Name = person.Name,
Age = person.Age }
: new Person {
Address= person.Address,
Name = person.Name,
Age = person.Age ,
Height = person.Height}).ToList();
EDIT: Понял работать, посмотрите на мой ответ
Вы пытались выбрать новые «Лица» вместо использования анонимных классов? – Thousand
ooh спасибо ...это было легко :) – evilone
Я удивлен, что выбираю работы Человека, если только ваш класс человека не использует Equals() и GetHashCode(). Если это EF, то я уверен, что он не позволит вам выбирать новые экземпляры класса сущности. – ChaseMedallion