如何使用LINQ比较同一个Object的两个属性

时间:2015-12-15 23:06:39

标签: c# linq

我有以下课程

class MyClass
{
    public int ActualAge {get;set;}
    public int ReportedAge{get;set;}
}

我有一个上面类的填充集合,如下所示

List<MyClass> myClassList = new List<MyClass>
{ 
    new MyClass { ActualAge= 10, ReportedAge =10}, 
    new MyClass { ActualAge= 10, ReportedAge =30} , 
    new MyClass { ActualAge= 20, ReportedAge =20}, 
    new MyClass { ActualAge= 10, ReportedAge = 90}
};

现在面临的挑战是

AcutalAge == ReportedAge

然后(假设有另一个变量)

private List<int> Age

年龄变量应该等于ActualAge属性的集合,如果没有,那么Age变量应该等于ActualAge / ReportedAge的集合。

我想知道如何通过在C#中使用LINQ来实现这一点。

3 个答案:

答案 0 :(得分:3)

如果Age被声明为List<string> 您可以使用以下代码填充此列表

List<string> Age
Age = myClassList.Select(x => x.ReportedAge == x.ActualAge ?
                                          x.ReportedAge.ToString() :
                                          string.Format("{0}/{1}", x.ReportedAge, x.ActualAge)).ToList()

因此,您的列表将包含1012/134015/18

答案 1 :(得分:2)

您想在'{}'上执行“选择”,将每个项目的所需状态映射到您生成的myClassList列表中。要在两者相等时仅显示Age,请在ActualAge中使用条件语句:

Select

答案 2 :(得分:0)

IList<string> Age = myClassList.Select(x => x.ActualAge == x.ReportedAge ? x.ActualAge + "/" + x.ReportedAge : x.ActualAge.ToString()).ToList()