傻大方


首页 > 人文 >

var|代码干货——C#Linq表达式的高级写法



按关键词阅读:

var|代码干货——C#Linq表达式的高级写法

文章图片

var|代码干货——C#Linq表达式的高级写法

Linq全称为“Language Integrated Query” , 译为“语言集成查询” 。 主要在前台对数据源的封装与处理 。 接下来就项目的实际需求场景 , 介绍下面的Linq用法:

  • 匹配筛选(where)子句
  1. 属性筛选
界面上有一个checkListComboxEdit控件 , 其数据项都存在Items数组中 , 选中项存在SelectdedItems如果我们要选择其中的选中项 , 写代码的思路必然是foreach这个数组 , 然后重新new一个新的List , 然后将其中的item重新添加到这个新的List , 下面给出代码示例:
List<object> list = new List<object>();foreach (var item in this.checkedListBoxControl_ProdIndex.SelectedItems)
{
 list.Add(item);


使用where筛选将会变得更加简单 , 不信你看:
var selectItems = this.checkedListBoxControl_ProdIndex.Items
.Where(x => x.CheckState == CheckState.Checked).ToList();


checkList遍历获取
2.多list列表属性匹配筛选
假设项目中得到了一个类型为TreeListNodeDescriptor的list列表 , 如果要根据其共有属性匹配成另外一个list列表 , 作用是获取井信息 , 类型为WellInfoDecriptor , 其中一个方案就是遍历原有的TreeListNodeDescriptor的list , 然后匹配里面的WellName属性 , 然后将WellInfo获取出来 , 仔细想想代码其实会写的很冗长 。 而通过Where子句就会变得很简单 , 其中用到Any()检查是否满足该条件 , 相当于遍历中的if语句 。 直接上代码:
var wellGeoList = DataCenter.Instance.WellGeoUnits;

【var|代码干货——C#Linq表达式的高级写法】其中WellGeoUnits为TreeListNodeDescriptor类型的列表 , DataCenter为数据中心 , 主要是调用后端数据接口 , 将井节点传递到前台 。 WellGeoUnit属性进行了封装 , 设置为只读属性:
public List<TreeListNodeDescriptor> WellGeoUnits
{
 get { return wellGeoUnits;


接着 , 需要通过井Id获取到井信息 , 由于提前获取到了所有的井信息 , 保存在List<WellInfoDecriptor>中 , 命名为AllWells , 于是:
var allWells = DataCenter.Instance.AllWells
.Where(x => wellGeoList.Any(y => y.NodeName == x.WellName)).ToList();


多表连接
AllWells封装属性为:
/// <summary>/// 所有井/// </summary>
public List<WellInfoDescriptor> AllWells {     get { return _allWells;


属性封装
通过Any()方法 , 将两个列表的共有属性WellName进行判断 , 获取出所有井中包含该井名的井信息 , 这样做的前提保障是井名不会重复 , 自己做的时候需要有一个主键属性 , 通过这样的方式 , 将所有井的信息获取出来 , 保存在allWells的list列表中 。
今天就先分享Linq表达式的where子句的用法 , 其中还介绍了多表连接中 , 使用Any()属性判断属性是否相同 , 合理使用Linq表达式 , 会让代码的效率事半功倍 , 代码可读性增加 。 明天分享投影以及排序、去重方法 。 请大家敬请关注 。 如果觉得这篇文章对您有帮助 , 请帮我点个赞或者评论下 , 您的鼓励是我更新下去的动力 。 关注我了解更多代码的写法 。


    来源:(努力的浩浩)

    【】网址:/a/2021/0208/kd693464.html

    标题:var|代码干货——C#Linq表达式的高级写法


    上一篇:数学|直击高考数学——不等式思想与方法应用,从基础知识到方法技巧汇

    下一篇:招商|2020年贵州招商引资成绩“亮眼”到位资金同比增长14%


    人文

    拉美|下周全球新冠病例数将达1000万?拉美多国疫情未达峰值

    阅读(38)

    世卫组织据此预计,全球新冠确诊病例将在下周达到1000万例。谭德塞称,随着一些国家开始重新开放,如何安全地举行大规模集会的问题变得越来越重要。沙特此前宣布限制赴麦加朝觐的人数,谭德塞称,所有国家都必须面对类似的艰难选择,民众健康应该被放在首位。...