我有一个 Person 对象:
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
对象。
我想知道是否有一种方法可以根据对象的某些属性在 LINQ 中将三元运算符与 GroupBy 一起使用。例如:
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' 之间没有隐式转换
这完全可以实现吗?如何实现?
谢谢
编辑:试过这个,但不工作。
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();
编辑:让它工作,看看我的答案