Tom*_*Tom 40 c# linq linq-to-objects select
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();
Run Code Online (Sandbox Code Playgroud)
我想要一个不同的所有ClassA
对象列表classBList
.我如何使用LINQ解决这个问题?我正在考虑嵌套查询,但无法弄明白.非常感谢任何帮助.
SLa*_*aks 88
您正在尝试为ClassB
原始列表中的每个对象选择多个结果对象.
因此,您正在寻找SelectMany
扩展方法:
var results = classBList.SelectMany(b => b.MyObjects).Distinct();
Run Code Online (Sandbox Code Playgroud)
如果要使用查询表达式,则需要使用两个from
子句:
var results = (from b in classBList from a in b.MyObjects select a).Distinct();
Run Code Online (Sandbox Code Playgroud)
Jus*_*ner 16
您想使用IEnumerable.SelectMany()
扩展方法来展平层次结构:
var result = classBList.SelectMany(b => b.MyObjects).Distinct();
Run Code Online (Sandbox Code Playgroud)