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

  • 相关阅读:
    POJ 3126 Prime Path
    POJ 2429 GCD & LCM Inverse
    POJ 2395 Out of Hay
    【Codeforces 105D】 Bag of mice
    【POJ 3071】 Football
    【POJ 2096】 Collecting Bugs
    【CQOI 2009】 余数之和
    【Codeforces 258E】 Devu and Flowers
    【SDOI 2010】 古代猪文
    【BZOJ 2982】 combination
  • 原文地址:https://www.cnblogs.com/sky6699/p/5266727.html
Copyright © 2011-2022 走看看