C# C从列表中的列表中选择属性值
我有以下目标C# C从列表中的列表中选择属性值,c#,list,C#,List,我有以下目标 class A { public List<B> listB { get; set; } } class B { public int id { get; set; } } 但它给了我一个编译错误 我该怎么做呢?您就快到了,请使用SelectMany 检查您的您必须使用SelectMany使列表变平: var ids = lst.SelectMany(x => x.listB.Select(y => y.id)).ToList();
class A
{
public List<B> listB { get; set; }
}
class B
{
public int id { get; set; }
}
但它给了我一个编译错误
我该怎么做呢?您就快到了,请使用SelectMany
检查您的您必须使用SelectMany使列表变平:
var ids = lst.SelectMany(x => x.listB.Select(y => y.id)).ToList();
这就是我所做的,它工作得非常完美 我所做的只是将这些类公开,并且在初始化列表时,添加新列表,因为即使intellisense没有显示任何错误,但在运行应用程序时,会出现对象未引用错误
class Program
{
static void Main(string[] args)
{
var lstA = new List<A>();
var a1 = new A()
{
listB = new List<B>()
{
new B
{
id = 3
},
new B
{
id = 5
}
}
};
var a2 = new A()
{
listB = new List<B>()
{
new B
{
id = 1
},
new B
{
id = 8
}
}
};
lstA.Add(a1);
lstA.Add(a2);
var ids = lstA.SelectMany(r => r.listB.Select(x => x.id));
foreach (var id in ids)
{
Console.WriteLine(id);
}
Console.ReadKey();
}
}
public class A
{
public List<B> listB { get; set; }
}
public class B
{
public int id { get; set; }
}
请尝试忽略重复的id
var ids = lstA.SelectMany(x => x.listB.Select(y => y.id)).Distinct().ToList();
不留下评论就否决投票对任何人都没有帮助,请发表评论。我们总是可以改进答案。问题与课程是否公开或其他任何形式无关。不过,您提到的内容与Hari和我在回答中建议的内容相同,即使用SelectMany而不是Select。这就是解决问题的方法。
var ids = lst.SelectMany(x => x.listB.Select(y => y.id)).ToList();
class Program
{
static void Main(string[] args)
{
var lstA = new List<A>();
var a1 = new A()
{
listB = new List<B>()
{
new B
{
id = 3
},
new B
{
id = 5
}
}
};
var a2 = new A()
{
listB = new List<B>()
{
new B
{
id = 1
},
new B
{
id = 8
}
}
};
lstA.Add(a1);
lstA.Add(a2);
var ids = lstA.SelectMany(r => r.listB.Select(x => x.id));
foreach (var id in ids)
{
Console.WriteLine(id);
}
Console.ReadKey();
}
}
public class A
{
public List<B> listB { get; set; }
}
public class B
{
public int id { get; set; }
}
var ids = lstA.SelectMany(x => x.listB.Select(y => y.id)).Distinct().ToList();