public class ClassA
{
public string MyString {get; set;}
}
public class ClassB
{
public List<ClassA> MyObjects {get; set;}
}
List<ClassB> classBList = new List<ClassB>();
var results = (from i in classBList select i.MyObjects).Distinct();
我想要ClassA
中所有classBList
个对象的明确列表。如何使用 LINQ 解决此问题?我正在考虑嵌套查询,但无法弄明白。非常感谢任何帮助。
答案 0 :(得分:85)
您正在尝试为原始列表中的每个ClassB
对象选择多个结果对象。
因此,您正在寻找SelectMany
extension method:
var results = classBList.SelectMany(b => b.MyObjects).Distinct();
如果您想使用查询表达式,则需要使用two from
clauses:
var results = (from b in classBList from a in b.MyObjects select a).Distinct();
答案 1 :(得分:14)
您希望使用IEnumerable.SelectMany()
扩展方法来展平层次结构:
var result = classBList.SelectMany(b => b.MyObjects).Distinct();