获取所有上级的所有下级节点且Select和SelectMany的用法作用和区别

SelectMany的用法

先给个参数

public class model
{
    public int id
    public user Users 
}
public class user
{
   public int id
   public string name
}

存数据

List<Model> List=new List<model>
{
   new model
   {
     id=1;
     Users= new User
     {
      id=2;
      name="猜猜我是谁"
     } 
   }
   new model()
   ...
   ..
   .

用法很简单

var result = List.SelectMany(x=>x.model) //取List里面所有model加上User中的所有数据

获取后是按循序排序
比如说

  new model
 {
  ner user{ id=1; }
  ner user{ id=1; }
 }

 model= new model
 {
  ner user{ id=2; }
  ner user{ id=2; }
 }

当一个里面有多个的时候,是在一起的

输出
id=1
id=1
id=2
id=2

按合成一个集合时的循序来的

Select和SelectMany的用法作用和区别

select 通常作用与集合或者自定义类的取值
例子:

var result =list.select(x=>new Models   <------models就是可以把值给自定义类,可以指取其中几个值
{ 
  ID=x.id,
  NAME=x.name,
});

SelectMany通常用作于取下一级节点的所有数据
例子:

var result =list.select(x=> new Models
{
   Id=x.id
   NameList=x.user.SelectMany(y=>y.name)  <--------可以指定获取某一个节点下的所有值
});

上述为个人理解,如有不对请指出

上一篇:迭代器


下一篇:linq中select和selectMany的区别