对于一个集合,我们通常会用foreach或者for循环来判断查找里面的元素。

但这种方法通常会看起来比较复杂,我们可以使用linq。

Linq允许编写C#代码以查询数据库相同的方式操作内存数据(写法类似于SQL)

核心目标是让程序员关心What,而不是How,所以效率通常不及不用Linq的实现。

但Linq的代码非常易理解,并且可以写的非常简洁。
一般的,可以使用Select、Where、OrderBy、GroupBy条件表达式

有这么一个字符串数组:

string[] myTest = new string[] { "Lily", "Micky", "jack", "Amy", "jake", "tera","Yvan"};

var myTest1 = myTest.Select((name) => name.ToUpper());    //全部变为大写字母     

--这里面的name可任取名字,表示一个参数

var myTest2 = myTest.Select((name) => name.ToUpper()).Where((name)=>name.Length > 4);//在上面基础上找到名字长度大于4的

var myTest3 = myTest.Select((name) => name).Where((name) => name.Length < 5).GroupBy((name => name.Substring(0, 1)));

//名字长度小于5的按照首字母分组                                   也可以按照首字母排序:前面省略+ .OrderBy((name=>name.Substring(0,1)

同时除了以上写法还有另外一种

 

 int[] myNumTest = new int[] { 22, 11, 33, 55, 2, 111, 4, 33, 222, 55, 86, 31 };//数据都是随便乱输入的

var max = (from myitem in myNumTest where myitem % 2 != 0 select myitem).Max();//选出能被2整除且取出最大值

好了,下面来处理XML文档(这都是参照视频的)

这个是选取的百度API中获取周边银行返回的XML数据

<?xml version="1.0" encoding="UTF-8"?>

<PlaceSearchResponse>
  <status>0</status>
  <message>ok</message>
  <results>
    <result name="a">
      <name>交通银行ATM</name>
      <location>
        <lat>39.917437</lat>
        <lng>116.403147</lng>
      </location>
      <address>北京市东城区东长安街天安门内</address>
      <uid>7af671e39c0b6c1158f6be9f</uid>
    </result>
    <result>
      <name>中国银行ATM</name>
      <location>
        <lat>39.912947</lat>
        <lng>116.396089</lng>
      </location>
      <address>北京市西城区西长安街2号</address>
      <uid>82cf55ea33c0f0eefbdc856b</uid>
    </result>
    <result>
      <name>原麦加利银行</name>
      <location>
        <lat>39.908533</lat>
        <lng>116.406818</lng>
      </location>
      <address>东交民巷39</address>
      <uid>6cc9b6851fa53eb715c9057e</uid>
    </result>
    <result>
      <name>大陆银行旧址</name>
      <location>
        <lat>39.908388</lat>
        <lng>116.4017</lng>
      </location>
      <address>北京市西城区西交民巷17号</address>
      <uid>d472daffc63327a3d72ce2da</uid>
    </result>
    <result>
      <name>保商银行旧址</name>
      <location>
        <lat>39.908395</lat>
        <lng>116.401315</lng>
      </location>
      <address>北京市西城区西交民巷17</address>
      <uid>2fd2beabbcc4f12c7bdbd2af</uid>
    </result>
    <result>
      <name>中央银行旧址</name>
      <location>
        <lat>39.908347</lat>
        <lng>116.400848</lng>
      </location>
      <address>北京市西城区西交民巷17号</address>
      <uid>b958cfb975ce24e36240a948</uid>
    </result>
    <result>
      <name>中国银行ATM</name>
      <location>
        <lat>39.90836</lat>
        <lng>116.400191</lng>
      </location>
      <address>北京市西城区西交民巷甲19号</address>
      <uid>b4c84cd9c192007431169ba7</uid>
    </result>
    <result>
      <name>北京农商银行ATM(东长安支行)</name>
      <location>
        <lat>39.913888</lat>
        <lng>116.413451</lng>
      </location>
      <address>东长安街12</address>
      <uid>bf29b702a92f9f9909b93ac9</uid>
    </result>
    <result>
      <name>北京农商银行东长安支行</name>
      <location>
        <lat>39.913784</lat>
        <lng>116.41346</lng>
      </location>
      <address>东长安街12号</address>
      <telephone>(010)85229651</telephone>
      <uid>cc788fde071b2f8a88fc06c9</uid>
    </result>
  </results>
</PlaceSearchResponse>
View Code

相关文章: