zoukankan      html  css  js  c++  java
  • 从一个集合中过滤另一个集合中存在的项(类似in)

    直接贴代码出来:

    List<PriceMark> list = PriceMarkDAL.m_PriceMarkDAL.GetList("Erp_ProName='TLC7528CDWR'");
    ZWCUSTORDERClient pri = new ZWCUSTORDERClient();
    ZwjgA610Konm[] Prices = new ZwjgA610Konm[11];
    byte b = pri.ZWsPrice("TLC7528CDWR", ref Prices);
    
    List<ZwjgA610Konm> PriList = Prices.ToList();
    IEnumerable<ZwjgA610Konm> query = from t in PriList where list.Any(r => t.Kstbm == r.Grade) select t;
    List<ZwjgA610Konm> kk = query.ToList();

    以上代码贴出来不方便观察的话,下面是直接从VS中截图出来的,方便查看

    这样查看一目了然啊,大致意思是这样的,List<PriceMark> list存放的是型号TLC7528CDWR要显示的价位档,从本地数据表中读取,取出来有要显示1、100、1000

    ZwjgA610Konm[] Prices 是从SAP中取出来的型号TLC7528CDWR的所有价位档,我这里是通过WebService取出来的,所以才会搞出这么麻烦的事来,要是都是本地读多好,也不用这么蛋疼了。。。取出来的会包括1、25、50、100.....3000等很多价位档

    下面两行就是从集合Prices中取出包含在list集合中的价位档,也就是从中取出1、100、1000三个价位档来,最后得到一个只包含1、100、1000三个价位档的新的集合List<ZwjgA610Konm> kk,结构不变,跟Prices结构一样

    IEnumerable<ZwjgA610Konm> query = from t in PriList where list.Any(r => t.Kstbm == r.Grade) select t;

    List<ZwjgA610Konm> kk = query.ToList();

    下面是真实的网站显示效果(价格显示了三档)

    以上方法是为了避免写出两个集合循环比较的代码(一个内循环,一个外循环,本人认为这种方法不是一个优秀程序员应该做的事),当然了,如果只取出一个价位档的话就不需要这么麻烦了,直接按下面的方法就行了

    List<ZwjgA610Konm> kk = PriList.FindAll(c => c.Kstbm == 100);

    或者

    List<ZwjgA610Konm> kk = PriList.FindAll(delegate(ZwjgA610Konm c) { return c.Kstbm == 100; });

    一样的效果,上面是lamda表达式的简写,可以省很多代码。

    本人出自 “海角之上” 博客,转载请注明出处:http://www.cnblogs.com/sky6699/p/5266727.html

  • 相关阅读:
    bzoj 4034 [HAOI2015]树上操作——树链剖分
    bzoj 1179 [Apio2009]Atm——SCC缩点+spfa
    bzoj 1123 [POI2008]BLO——点双连通分量
    poj1830开关问题——异或高斯消元
    bzoj2004公交线路——DP+矩阵加速递推
    bzoj2875随机数生成器——矩阵快速幂
    Splay模板
    map插入与查找
    bzoj1013高斯消元
    bzoj2257瓶子与燃料——最大公约数
  • 原文地址:https://www.cnblogs.com/sky6699/p/5266727.html
Copyright © 2011-2022 走看看