C#代码高级写法——总结Linq表达式Select方法的多使用场景

今天写Linq表达式中Select以及SelectMany的用法,select是将一个源list投影到一个属性值或者多个属性值,也可以是另外一个属性类,通常和where子句连用,通过where子句对list进行筛选之后投影成我们需要的属性。有时我们只需要list中的单个属性,例如是需要查询井的信息,那么我们只需要知道井ID的list集合。那么我们就可以使用select语句投影成到这个井ID属性。

  • select单属性投影

石油软件类的项目通常左边为项目树,通过左边treeList的节点点击,向后台发送TreeNode属性集合,石油类部门的组织机构通常分为井区、井组、单井,当我们点击了井组集合,井区之下包含了很多口单井,井组之下包含该井组的单井,通常为5~10口单井。假设用户点击了井组节点之后,我们要获得他下面的单井节点。我们首先需要判断用户点击的是哪一级的节点,做法一般是给点击的节点赋值一个Level,通过spilt()方法判断点击是井区、井组还是单井级别。当然我们这里限定了用户点击的是井组节点,那么我们就要获取它下面所属的单井节点。需要注意的是,项目树节点传过来的类型为List

需求:筛选出组织机构下的单井,拿到井ID属性

做法:先使用where子句筛选是否为组织机构的单井,通过select方法投影出井的ID

var allOilWellsId = wellNode.Where(x => x is WellOrganDescriptor)
.OfType()
.Select(x => x.WellID).ToList();

WellOrganDescriptor类封装了组织机构

你可能感兴趣的:(C#,c#)