如何使用LINQ比较同一对象的两个属性
本文关键字:属性 两个 对象 LINQ 何使用 比较 | 更新日期: 2023-09-27 18:26:53
我有以下类
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属性的集合,如果不等于,则年龄变量应与ActualAge/ReportedAge的集合相等。
我想知道如何在C#中使用LINQ来实现这一点。
如果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()
因此,您的列表将包含10
、12/13
、40
、15/18
您想对myClassList
执行"选择",将每个项目的所需状态映射到您的结果Age
列表中。当两者相等时,为了只显示ActualAge
,请在Select
:中使用条件语句
List<string> Age = myClassList.Select(i =>
i.ActualAge == i.ReportedAge
? i.ActualAge.ToString()
: String.Format("{0}/{1}",
i.ActualAge,
i.ReportedAge)
).ToList();
IList<string> Age = myClassList.Select(x => x.ActualAge == x.ReportedAge ? x.ActualAge + "/" + x.ReportedAge : x.ActualAge.ToString()).ToList()