构造LINQ查询以返回列表中的一个项,该项通过一个属性与其他成员相关,但通过第二个属性不同
本文关键字:一个 属性 成员 其他 第二个 LINQ 列表 构造 返回 查询 | 更新日期: 2023-09-27 18:25:29
所以我有一个对象列表,让我们称它们为大象。
每个大象对象都有一个名为ClonedFrom的属性。这是Elephant类型,用于指向在图像中创建此新对象的对象。
Elephant类还有一个名为HasTrunk的属性,它属于bool类型。
因此:
public class Elephant
{
public Elephant ClonedFrom { get; set; }
public bool HasTrunk { get; set; }
}
我们有
List<Elephant> herd
我想要一个LINQ查询,它将返回任何具有假HasTrunk属性但同时具有ClonedFrom属性值的Elephant,该值等于同一列表中HasTrunk特性设置为true的另一个Elephant。
例如,大象A被克隆以创建新的大象B和C
B和C都存在于群列表中,并且都具有相同的ClonedFrom属性值(A)。B的HasTrunk设置为false,而C的HasTruck设置为true。
我想要一个返回B.的查询
(注意:A是否在列表中并不重要)
List<Elephant> herd = new List<Elephant>{
new Elephant(), new Elephant(), new Elephant(), new Elephant()
};
herd[0].HasTrunk = true;
herd[1].HasTrunk = true;
herd[2].HasTrunk = false;
herd[3].HasTrunk = false;
herd[0].ClonedFrom = herd[0];
herd[1].ClonedFrom = new Elephant();
herd[2].ClonedFrom = herd[0];
herd[3].ClonedFrom = new Elephant();
herd.Where(elephant => !elephant.HasTrunk && herd.Where(elephant2 =>
elephant2.HasTrunk).Any(elephant2 => elephant2.ClonedFrom == elephant.ClonedFrom)); //One item - elephant number 2