C# 从集合中筛选数据
我有一个父类的集合。父类有一个ID属性和一些其他类属性。因此,我希望根据C# 从集合中筛选数据,c#,linq,collections,C#,Linq,Collections,我有一个父类的集合。父类有一个ID属性和一些其他类属性。因此,我希望根据父ID获取这些子属性值。我能够获取集合的一项,但我需要该项的单个值。下面是我的代码: public class Parent { public int Id { get; set; } public Child MyChild { get; set; } } public class Child { public string abc { get; set; } public string
父ID
获取这些子属性值。我能够获取集合的一项,但我需要该项的单个值。下面是我的代码:
public class Parent
{
public int Id { get; set; }
public Child MyChild { get; set; }
}
public class Child
{
public string abc { get; set; }
public string xyz { get; set; }
}
class Program
{
static void Main(string[] args)
{
var d = new List<Parent>();
d.Add(new Parent
{
Id = 1,
MyChild = new Child()
{
xyz = "XYZ one",
abc = "ABC one"
}
});
d.Add(new Parent
{
Id = 2,
MyChild = new Child()
{
xyz = "XYZ two",
abc = "ABC two"
}
});
for (int i = 1; i < 2; i++)
{
var xyzValueOfParentIdOneValue = d.SingleOrDefault(x => x.Id = 1) // Here, I want to get XYZ property value of Parent ID 1.
}
}
}
公共类父类
{
公共int Id{get;set;}
公共子MyChild{get;set;}
}
公营儿童
{
公共字符串abc{get;set;}
公共字符串xyz{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
var d=新列表();
d、 添加(新的父项)
{
Id=1,
MyChild=新的子对象()
{
xyz=“xyz-one”,
abc=“abc一号”
}
});
d、 添加(新的父项)
{
Id=2,
MyChild=新的子对象()
{
xyz=“xyz-two”,
abc=“abc二”
}
});
对于(int i=1;i<2;i++)
{
var xyzvalueofparentionevalue=d.SingleOrDefault(x=>x.Id=1)//这里,我想获取父Id 1的XYZ属性值。
}
}
}
我想您只想访问父对象的MyChild
属性,比如:
var parent = d.SingleOrDefault(x => x.Id == 1);
var xyz = parent.MyChild.xyz;
你可以用这个
var xyzValueOfParentIdOneValue = d.SingleOrDefault(x => x.Id == 1)
?.MyChild
?.xyz;
if (xyzValueOfParentIdOneValue != null)
{
......
}
或
上述两个代码完全相似。因为如果父Id不存在,您希望返回默认值“0”,所以可以使用
var xyzValueOfParentIdOneValue = d.SingleOrDefault(x => x.Id == idToSearch)?
.MyChild?
.xyz ?? "0";
您想要什么确切的输出?我想要XYZ属性的“XYZ one”值。我还需要检查此集合是否具有特定的父id。如果不是,我将返回一个默认值(类似于“0”)……这就是为什么我尝试使用SingleOrDefault(),因为问题是循环使用的。我想他需要一个循环来做点什么。我改了@谢谢你的回复。
var xyzValueOfParentIdOneValue = d.SingleOrDefault(x => x.Id == idToSearch)?
.MyChild?
.xyz ?? "0";