string 类的扩展方法

string 类的扩展方法列表(基本相同于 IEnumerable<T> 接口的成员列表):


<pre>Aggregate<>          <span style="color:#008000;">//累加
</span>All<>                <span style="color:#008000;">//是否都满足条件
</span>Any<>                <span style="color:#008000;">//是否有一个满足条件
</span>AsEnumerable<>       <span style="color:#008000;">//
</span>AsParallel<>         <span style="color:#008000;">//
</span>AsQueryable<>        <span style="color:#008000;">//
</span>Average<>            <span style="color:#008000;">//平均值
</span>Cast<>               <span style="color:#008000;">//
</span>Concat<>             <span style="color:#008000;">//连接
</span>Contains<>           <span style="color:#008000;">//是否包含
</span>Count<>              <span style="color:#008000;">//总数
</span>DefaultIfEmpty<>     <span style="color:#008000;">//指定默认空值
</span>Distinct<>           <span style="color:#008000;">//去除重复
</span>ElementAt<>          <span style="color:#008000;">//获取指定位置的元素
</span>ElementAtOrDefault<> <span style="color:#008000;">//同 ElementAt, 但获取失败则返回默认的空值
</span>Except<>             <span style="color:#008000;">//差集
</span>First<>              <span style="color:#008000;">//获取第一个元素
</span>FirstOrDefault<>     <span style="color:#008000;">//同 First, 但获取失败返回默认的空值
</span>GroupBy<>            <span style="color:#008000;">//分组
</span>GroupJoin<>          <span style="color:#008000;">//关联分组
</span>Intersect<>          <span style="color:#008000;">//交集
</span>Join<>               <span style="color:#008000;">//串联
</span>Last<>               <span style="color:#008000;">//获取最后一个元素
</span>LastOrDefault<>      <span style="color:#008000;">//同 Last, 但获取失败返回默认的空值
</span>LongCount<>          <span style="color:#008000;">//同 Count, 但返回 Int64
</span>Max<>                <span style="color:#008000;">//最大值
</span>Min<>                <span style="color:#008000;">//最小值
</span>OfType<>             <span style="color:#008000;">//
</span>OrderBy<>            <span style="color:#008000;">//排序
</span>OrderByDescending<>  <span style="color:#008000;">//倒排序
</span>Reverse<>            <span style="color:#008000;">//翻转
</span>Select<>             <span style="color:#008000;">//映射
</span>SelectMany<>         <span style="color:#008000;">//深度映射
</span>SequenceEqual<>      <span style="color:#008000;">//
</span>Single<>             <span style="color:#008000;">//获取只是唯一的元素, 不唯一或获取不到则异常
</span>SingleOrDefault<>    <span style="color:#008000;">//获取只是唯一的元素, 不唯一则异常, 获取不到则取默认空值
</span>Skip<>               <span style="color:#008000;">//获取指定序号之后的
</span>SkipWhile<>          <span style="color:#008000;">//获取指定条件之后的
</span>Sum<>                <span style="color:#008000;">//求和
</span>Take<>               <span style="color:#008000;">//获取指定序号之前的
</span>TakeWhile<>          <span style="color:#008000;">//获取指定条件之前的
</span>ToArray<>            <span style="color:#008000;">//
</span>ToCharArray<>        <span style="color:#008000;">//
</span>ToDictionary<>       <span style="color:#008000;">//
</span>ToList<>             <span style="color:#008000;">//
</span>ToLookup<>           <span style="color:#008000;">//
</span>Union<>              <span style="color:#008000;">//并集
</span>Where<>              <span style="color:#008000;">//筛选
</span>Zip<>                <span style="color:#008000;">//合并</span>
 


获取首尾的字符(First、Last、FirstOrDefault、LastOrDefault):


<pre><span style="color:#008000;">/* 函数及重载 */</span>
First <Char>()                               <span style="color:#008000;">// 函数名: First; <Char> 中的 Char 是返回值类型; () 表示这是一个无参数的重载
</span>First <Char> (Func <Char, Boolean>)          <span style="color:#008000;">// 这里的参数是个函数, 其(函参)返回值是 Boolean 类型, 参数是 Char 类型.
</span>                                             <span style="color:#008000;">// <> 中是函数参数与返回值的列表, 最后一个是返回值.
</span>FirstOrDefault <Char>()                      <span style="color:#008000;">// 同 First, 但如果找不到则返回默认值 null
</span>FirstOrDefault <Char> (Func <Char, Boolean>) <span style="color:#008000;">//
</span>Last <Char>()                                <span style="color:#008000;">// 顾名思义, 同上
</span>Last <Char> (Func <Char, Boolean>)           <span style="color:#008000;">//
</span>LastOrDefault <Char>()                       <span style="color:#008000;">//
</span>LastOrDefault <Char> (Func <Char, Boolean>)  <span style="color:#008000;">//
</span>

<span style="color:#008000;">//下面例子很容易理解:
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"ABCDEFG"</span>;
    <span style="color:#0000ff;">char</span> c1 = str.First(); <span style="color:#008000;">// A
</span>    <span style="color:#0000ff;">char</span> c2 = str.Last();  <span style="color:#008000;">// G
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(c1, <span style="color:#a31515;">"/n"</span>, c2);
}

<span style="color:#008000;">//下面例子使用了其第二种重载, 其参数是个函数, 使用了 Lambda 匿名函数表达式:
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"ABCDEFG"</span>;
    <span style="color:#0000ff;">char</span> c1 = str.First(p => p != <span style="color:#a31515;">'A'</span>); <span style="color:#008000;">// B : 这是获取不是 A 的第一个字符
</span>    <span style="color:#0000ff;">char</span> c2 = str.Last(p => p < 70);    <span style="color:#008000;">// E : 这是获取字符编码值大于 70(F) 的倒数第一个字符
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(c1, <span style="color:#a31515;">"/n"</span>, c2);
}

<span style="color:#008000;">// Lambda 表达式中, 
</span><span style="color:#008000;">// => 前面的是参数列表, 其类型可被自动识别所以可省略, 只有一个参数时可省略括号; 其中的 p 是自定义的变量名.
</span><span style="color:#008000;">// => 后面的是函数内容, 通常只有一句话; 但其必须返回指定的类型(本例中是 Boolean).
</span>
<span style="color:#008000;">//测试用于其它数组:
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button3_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    <span style="color:#0000ff;">string</span>[] sArr = { <span style="color:#a31515;">"one"</span>, <span style="color:#a31515;">"two"</span>, <span style="color:#a31515;">"three"</span>, <span style="color:#a31515;">"four"</span>, <span style="color:#a31515;">"five"</span>, <span style="color:#a31515;">"six"</span>, <span style="color:#a31515;">"seven"</span>, <span style="color:#a31515;">"eight"</span>, <span style="color:#a31515;">"nine"</span>, <span style="color:#a31515;">"ten"</span> };

    <span style="color:#0000ff;">int</span> n1 = nArr.First();                     <span style="color:#008000;">//1
</span>    <span style="color:#0000ff;">int</span> n2 = nArr.First(x => x % 2 == 0);      <span style="color:#008000;">//2
</span>    <span style="color:#0000ff;">string</span> s1 = sArr.Last();                   <span style="color:#008000;">//ten
</span>    <span style="color:#0000ff;">string</span> s2 = sArr.Last(s => s.Length == 5); <span style="color:#008000;">//eight
</span>    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(n1, <span style="color:#a31515;">"/n"</span>, n2, <span style="color:#a31515;">"/n"</span>, s1, <span style="color:#a31515;">"/n"</span>, s2);
}
 


获取指定位置的元素(ElementAt、ElementAtOrDefault):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"Asp.Net 4.0"</span>;
    <span style="color:#0000ff;">char</span> c1 = str.ElementAt(1);            <span style="color:#008000;">//s
</span>    <span style="color:#0000ff;">char</span> c2 = str.ElementAtOrDefault(1);   <span style="color:#008000;">//s
</span>    <span style="color:#0000ff;">char</span> c3 = str.ElementAtOrDefault(999); <span style="color:#008000;">//
</span>    <span style="color:#0000ff;">bool</span> b1 = c3 == <span style="color:#a31515;">'/x00'</span>;                <span style="color:#008000;">//True
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(c1, <span style="color:#a31515;">"/n"</span>, c2, <span style="color:#a31515;">"/n"</span>, c3, <span style="color:#a31515;">"/n"</span>, b1);
}
 


统计操作(Aggregate、Count、LongCount、Max、Min、Sum、Average):


<pre><span style="color:#008000;">//用数字数组测试比较合适
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 2, 1, 4, 3, 6, 5 };

    <span style="color:#0000ff;">int</span> n1 = nArr.Count();                    <span style="color:#008000;">//6 
</span>    <span style="color:#0000ff;">int</span> n2 = nArr.Count(n => n % 2 == 0);     <span style="color:#008000;">//3 : 偶数元素总数
</span>    <span style="color:#0000ff;">int</span> n3 = nArr.Sum();                      <span style="color:#008000;">//21
</span>    <span style="color:#0000ff;">int</span> n4 = nArr.Max();                      <span style="color:#008000;">//6
</span>    <span style="color:#0000ff;">int</span> n5 = nArr.Min();                      <span style="color:#008000;">//1
</span>    <span style="color:#0000ff;">double</span> n6 = nArr.Average();               <span style="color:#008000;">//3.5
</span>    <span style="color:#0000ff;">int</span> n7 = nArr.Aggregate((x, y) => x * y); <span style="color:#008000;">//720 : 累乘
</span>    Int64 n8 = nArr.LongCount();              <span style="color:#008000;">//6 : LongCount 和 Count 只是返回值的类型不同
</span>
    <span style="color:#0000ff;">string</span> r = <span style="color:#a31515;">"/n"</span>;
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(n1 + r + n2 + r + n3 + r + n4 + r + n5 + r + n6 + r + n7 + r + n8);
}

<span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"one two three four five six seven eight nine ten"</span>;

    <span style="color:#0000ff;">int</span> n1 = str.Count();              <span style="color:#008000;">//48 : 这相当于 str.Length
</span>    <span style="color:#0000ff;">int</span> n2 = str.Count(s => s != <span style="color:#a31515;">' '</span>); <span style="color:#008000;">//39 : 这是非空格字符的总数
</span>    <span style="color:#0000ff;">char</span> c1 = str.Max();               <span style="color:#008000;">//x  : 这是序号最大的字符
</span>    <span style="color:#0000ff;">char</span> c2 = str.Min();               <span style="color:#008000;">//序号最小的字符在这里是空格
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(n1, <span style="color:#a31515;">"/n"</span>, n2, <span style="color:#a31515;">"/n"</span>, c1, <span style="color:#a31515;">"/n"</span>, c2);
}

<span style="color:#008000;">//通过 Aggregate 翻转字符串中的单词
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button3_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"one two three four five six seven eight nine ten"</span>;
    <span style="color:#0000ff;">string</span>[] sArr = str.Split(<span style="color:#a31515;">' '</span>);

    str = sArr.Aggregate((s1, s2) => s2 + <span style="color:#a31515;">" "</span> + s1); <span style="color:#008000;">//ten nine eight seven six five four three two one
</span>    TextBox1.Text = str;
}
 


集合操作(Intersect、Except、Union):


<pre><span style="color:#008000;">//测试整数数组的交集、差集、并集
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr1 = { 1, 2, 3, 4, 5, 6 };
    <span style="color:#0000ff;">int</span>[] nArr2 = { 4, 5, 6, 7, 8, 9 };

    IEnumerable<<span style="color:#0000ff;">int</span>> R1 = nArr1.Intersect(nArr2); <span style="color:#008000;">// 返回类型可以写作隐式类型 var
</span>    <span style="color:#0000ff;">var</span> R2 = nArr1.Except(nArr2);
    <span style="color:#0000ff;">var</span> R3 = nArr1.Union(nArr2);

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R1); <span style="color:#008000;">//456
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R2); <span style="color:#008000;">//123
</span>    <span style="color:#0000ff;">string</span> s3 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R3); <span style="color:#008000;">//123456789
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2, <span style="color:#a31515;">"/n"</span>, s3);
}

<span style="color:#008000;">//测试字符串(字符数组)的交集、差集、并集
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str1 = <span style="color:#a31515;">"Asp.Net 3.5"</span>;
    <span style="color:#0000ff;">string</span> str2 = <span style="color:#a31515;">"ASP.NET 4.0"</span>;

    <span style="color:#0000ff;">var</span> R1 = str1.Intersect(str2);
    <span style="color:#0000ff;">var</span> R2 = str1.Except(str2);
    IEnumerable<<span style="color:#0000ff;">char</span>> R3 = str1.Union(str2);

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R1); <span style="color:#008000;">//A.N 
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R2); <span style="color:#008000;">//spet35
</span>    <span style="color:#0000ff;">string</span> s3 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R3); <span style="color:#008000;">//Asp.Net 35SPET40
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2, <span style="color:#a31515;">"/n"</span>, s3);
}


<span style="color:#008000;">//定义一个 Person 类, 其有 Name 和 Age 两个属性
</span><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Person
{
    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Name { <span style="color:#0000ff;">get</span>; <span style="color:#0000ff;">set</span>; }
    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">int</span> Age { <span style="color:#0000ff;">get</span>; <span style="color:#0000ff;">set</span>; }
    <span style="color:#0000ff;">public</span> Person(<span style="color:#0000ff;">string</span> name, <span style="color:#0000ff;">int</span> age) { Name = name; Age = age; } <span style="color:#008000;">// 构造函数
</span>}

<span style="color:#008000;">//自定义的对比类, 以比较是否是同一个人
</span><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> PersonComparer : IEqualityComparer<Person>
{
    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">bool</span> Equals(Person p1, Person p2)
    {
        <span style="color:#0000ff;">return</span> p1.Name == p2.Name && p1.Age == p2.Age;
    }

    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">int</span> GetHashCode(Person obj)
    {
        <span style="color:#0000ff;">return</span> 0;
    }
}

<span style="color:#008000;">//获取两组人的交集、差集、并集
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button3_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> s1, s2, s3;
    s1 = s2 = s3 = <span style="color:#a31515;">""</span>;

    Person[] PersonArr1 = { <span style="color:#0000ff;">new</span> Person(<span style="color:#a31515;">"AA"</span>, 11), <span style="color:#0000ff;">new</span> Person(<span style="color:#a31515;">"BB"</span>, 22), <span style="color:#0000ff;">new</span> Person(<span style="color:#a31515;">"CC"</span>, 33) };
    Person[] PersonArr2 = { <span style="color:#0000ff;">new</span> Person(<span style="color:#a31515;">"CC"</span>, 33), <span style="color:#0000ff;">new</span> Person(<span style="color:#a31515;">"DD"</span>, 44), <span style="color:#0000ff;">new</span> Person(<span style="color:#a31515;">"AA"</span>, 55) };

    <span style="color:#0000ff;">var</span> ps1 = PersonArr1.Intersect(PersonArr2, <span style="color:#0000ff;">new</span> PersonComparer());
    <span style="color:#0000ff;">var</span> ps2 = PersonArr1.Except(PersonArr2, <span style="color:#0000ff;">new</span> PersonComparer());
    IEnumerable<Person> ps3 = PersonArr1.Union(PersonArr2, <span style="color:#0000ff;">new</span> PersonComparer());

    <span style="color:#0000ff;">foreach</span> (Person p <span style="color:#0000ff;">in</span> ps1) { s1 += <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}:{1} "</span>, p.Name, p.Age); } <span style="color:#008000;">//CC:33 
</span>    <span style="color:#0000ff;">foreach</span> (Person p <span style="color:#0000ff;">in</span> ps2) { s2 += <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}:{1} "</span>, p.Name, p.Age); } <span style="color:#008000;">//AA:11 BB:22 
</span>    <span style="color:#0000ff;">foreach</span> (Person p <span style="color:#0000ff;">in</span> ps3) { s3 += <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}:{1} "</span>, p.Name, p.Age); } <span style="color:#008000;">//AA:11 BB:22 CC:33 DD:44 AA:55
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2, <span style="color:#a31515;">"/n"</span>, s3);
}
 


连接、合并与串联(Concat、Zip、Join):


<pre><span style="color:#008000;">//Concat
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr1 = { 1, 2, 3 };
    <span style="color:#0000ff;">int</span>[] nArr2 = { 4, 5, 6 };

    <span style="color:#0000ff;">var</span> R1 = nArr1.Concat(nArr2);
    <span style="color:#0000ff;">var</span> R2 = nArr2.Concat(nArr1);
    <span style="color:#0000ff;">var</span> R3 = nArr1.Concat(nArr1);

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R1); <span style="color:#008000;">//123456
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R2); <span style="color:#008000;">//456123
</span>    <span style="color:#0000ff;">string</span> s3 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R3); <span style="color:#008000;">//123123
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}/n{1}/n{2}"</span>, s1, s2, s3);
}

<span style="color:#008000;">//Zip
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span>[] sArr = { <span style="color:#a31515;">"one"</span>, <span style="color:#a31515;">"two"</span>, <span style="color:#a31515;">"there"</span> };
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 2, 3 };

    <span style="color:#0000ff;">var</span> R1 = sArr.Zip(nArr, (x1, x2) => x1 + <span style="color:#a31515;">":"</span> + x2 + <span style="color:#a31515;">" "</span>);
    <span style="color:#0000ff;">var</span> R2 = sArr.Zip(nArr, (x1, x2) => x2 + <span style="color:#a31515;">":"</span> + x1 + <span style="color:#a31515;">" "</span>);

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R1); <span style="color:#008000;">//one:1 two:2 there:3 
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R2); <span style="color:#008000;">//1:one 2:two 3:there 
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2);
}

<span style="color:#008000;">//Join
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button3_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 2, 3, 4, 5, 6, 7 };
    <span style="color:#0000ff;">string</span>[] sArr = { <span style="color:#a31515;">"one"</span>, <span style="color:#a31515;">"two"</span>, <span style="color:#a31515;">"three"</span>, <span style="color:#a31515;">"four"</span>, <span style="color:#a31515;">"five"</span>, <span style="color:#a31515;">"six"</span>, <span style="color:#a31515;">"seven"</span>, <span style="color:#a31515;">"eight"</span>, <span style="color:#a31515;">"nine"</span>, <span style="color:#a31515;">"ten"</span> };

    <span style="color:#0000ff;">var</span> R = nArr.Join(sArr, n => n, s => s.Length, (n, s) => <span style="color:#0000ff;">new</span> { n, s });

    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">""</span>;
    <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">var</span> obj <span style="color:#0000ff;">in</span> R)
    {
        str += obj.n + <span style="color:#a31515;">" : "</span> + obj.s + <span style="color:#a31515;">"/n"</span>;
    }
    TextBox1.Text = str;

<span style="color:#008000;">/* 输出结果:
    3 : one
    3 : two
    3 : six
    3 : ten
    4 : four
    4 : five
    4 : nine
    5 : three
    5 : seven
    5 : eight
*/</span>
}
 


去除重复(Distinct):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"aabbccc"</span>;
    <span style="color:#0000ff;">var</span> cs = str.Distinct();
    <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">char</span> c <span style="color:#0000ff;">in</span> cs) { TextBox1.Text += c; } <span style="color:#008000;">//abc
</span>}

<span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 6, 8, 7, 9, 8, 0 };
    <span style="color:#0000ff;">var</span> ns = nArr.Distinct().OrderBy(x => -x);
    <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">int</span> n <span style="color:#0000ff;">in</span> ns) { TextBox1.Text += n.ToString(); } <span style="color:#008000;">//9876543210
</span>}
 


排序(OrderBy、OrderByDescending):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 3, 2, 4, 3, 5 };
    <span style="color:#0000ff;">string</span>[] sArr = { <span style="color:#a31515;">"one"</span>, <span style="color:#a31515;">"two"</span>, <span style="color:#a31515;">"three"</span>, <span style="color:#a31515;">"four"</span>, <span style="color:#a31515;">"five"</span>, <span style="color:#a31515;">"six"</span>, <span style="color:#a31515;">"seven"</span>, <span style="color:#a31515;">"eight"</span>, <span style="color:#a31515;">"nine"</span>, <span style="color:#a31515;">"ten"</span> };
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"Asp.Net"</span>;

    <span style="color:#0000ff;">var</span> R1 = nArr.OrderBy(x => x);
    <span style="color:#0000ff;">var</span> R2 = nArr.OrderByDescending(x => x);
    <span style="color:#0000ff;">var</span> R3 = sArr.OrderBy(x => x);
    <span style="color:#0000ff;">var</span> R4 = sArr.OrderByDescending(x => x);
    <span style="color:#0000ff;">var</span> R5 = str.OrderBy(x => x.ToString().ToLower());
    <span style="color:#0000ff;">var</span> R6 = str.OrderByDescending(x => x.ToString().ToLower());

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R1);  <span style="color:#008000;">//123345
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R2);  <span style="color:#008000;">//543321
</span>    <span style="color:#0000ff;">string</span> s3 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">" "</span>, R3); <span style="color:#008000;">//eight five four nine one seven six ten three two 
</span>    <span style="color:#0000ff;">string</span> s4 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">" "</span>, R4); <span style="color:#008000;">//two three ten six seven one nine four five eight 
</span>    <span style="color:#0000ff;">string</span> s5 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R5);  <span style="color:#008000;">//.AeNpst
</span>    <span style="color:#0000ff;">string</span> s6 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R6);  <span style="color:#008000;">//tspNeA. 
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2, <span style="color:#a31515;">"/n"</span>, s3, <span style="color:#a31515;">"/n"</span>, s4, <span style="color:#a31515;">"/n"</span>, s5, <span style="color:#a31515;">"/n"</span>, s6);
}
 


翻转(Reverse):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"Asp.Net"</span>;
    <span style="color:#0000ff;">var</span> cs = str.Reverse();
    <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">char</span> c <span style="color:#0000ff;">in</span> cs) { TextBox1.Text += c; } <span style="color:#008000;">//teN.psA
</span>}
 


筛选(Where):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    <span style="color:#0000ff;">string</span>[] sArr = { <span style="color:#a31515;">"one"</span>, <span style="color:#a31515;">"two"</span>, <span style="color:#a31515;">"three"</span>, <span style="color:#a31515;">"four"</span>, <span style="color:#a31515;">"five"</span>, <span style="color:#a31515;">"six"</span>, <span style="color:#a31515;">"seven"</span>, <span style="color:#a31515;">"eight"</span>, <span style="color:#a31515;">"nine"</span>, <span style="color:#a31515;">"ten"</span> };

    <span style="color:#0000ff;">var</span> R1 = nArr.Where(n => n % 2 == 0);
    <span style="color:#0000ff;">var</span> R2 = sArr.Where(s => s.Length == 3);

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">", "</span>, R1); <span style="color:#008000;">//2, 4, 6, 8
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">", "</span>, R2); <span style="color:#008000;">//one, two, six, ten
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2);
}
 


映射(Select、SelectMany):


<pre><span style="color:#008000;">//Select
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    <span style="color:#0000ff;">string</span>[] sArr = { <span style="color:#a31515;">"one"</span>, <span style="color:#a31515;">"two"</span>, <span style="color:#a31515;">"three"</span>, <span style="color:#a31515;">"four"</span>, <span style="color:#a31515;">"five"</span>, <span style="color:#a31515;">"six"</span>, <span style="color:#a31515;">"seven"</span>, <span style="color:#a31515;">"eight"</span>, <span style="color:#a31515;">"nine"</span>, <span style="color:#a31515;">"ten"</span> };

    <span style="color:#0000ff;">var</span> R1 = nArr.Select(n => n * n);
    <span style="color:#0000ff;">var</span> R2 = sArr.Select((str, index) => (index+1) + <span style="color:#a31515;">":"</span> + str.ToUpper());

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">","</span>, R1); <span style="color:#008000;">//1,4,9,16,25,36,49,64,81
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">" "</span>, R2); <span style="color:#008000;">//1:ONE 2:TWO 3:THREE 4:FOUR 5:FIVE 6:SIX 7:SEVEN 8:EIGHT 9:NINE 10:TEN
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2);
}

<span style="color:#008000;">//Select 与 SelectMany
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span>[] sArr = { <span style="color:#a31515;">"AA:BB:CC"</span>, <span style="color:#a31515;">"DD:EE:FF"</span>, <span style="color:#a31515;">"GG:HH:II"</span> };

    <span style="color:#0000ff;">var</span> R1 = sArr.Select(arr => arr.Split(<span style="color:#a31515;">':'</span>));
    <span style="color:#0000ff;">var</span> R2 = sArr.SelectMany(arr => arr.Split(<span style="color:#a31515;">':'</span>));

    <span style="color:#0000ff;">var</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">" "</span>, R1); <span style="color:#008000;">//System.String[] System.String[] System.String[]
</span>    <span style="color:#0000ff;">var</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">" "</span>, R2); <span style="color:#008000;">//AA BB CC DD EE FF GG HH II
</span>
    <span style="color:#0000ff;">var</span> s3 = <span style="color:#a31515;">""</span>;
    <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">string</span>[] ss <span style="color:#0000ff;">in</span> R1) { s3 += <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">" "</span>, ss) + <span style="color:#a31515;">"; "</span>; } <span style="color:#008000;">//AA BB CC; DD EE FF; GG HH II; 
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(s1, <span style="color:#a31515;">"/n"</span>, s2 + <span style="color:#a31515;">"/n"</span> + s3);
}
 


分组(GroupBy、GroupJoin):


<pre><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Person
{
    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Name { <span style="color:#0000ff;">get</span>; <span style="color:#0000ff;">set</span>; }
    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">int</span> Age { <span style="color:#0000ff;">get</span>; <span style="color:#0000ff;">set</span>; }
}
<span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    Person[] pArr = 
    {
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"AA"</span>, Age=11 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"BB"</span>, Age=22 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"CC"</span>, Age=33 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"DD"</span>, Age=11 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"EE"</span>, Age=22 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"FF"</span>, Age=33 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"GG"</span>, Age=11 }
    };

    <span style="color:#0000ff;">var</span> R1 = pArr.GroupBy(p => p.Age, p => p.Name);
    <span style="color:#0000ff;">var</span> R2 = pArr.GroupBy(p => p.Age, p => p);

    <span style="color:#0000ff;">string</span> str1 = <span style="color:#a31515;">""</span>;
    <span style="color:#0000ff;">foreach</span> (IGrouping<<span style="color:#0000ff;">int</span>, <span style="color:#0000ff;">string</span>> <span style="color:#0000ff;">group</span> <span style="color:#0000ff;">in</span> R1)
    {
        str1 += <span style="color:#0000ff;">group</span>.Key + <span style="color:#a31515;">"/n"</span>;
        <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">string</span> n <span style="color:#0000ff;">in</span> <span style="color:#0000ff;">group</span>) { 
            str1 += <span style="color:#a31515;">"/t"</span> + n + <span style="color:#a31515;">"/n"</span>; 
        }
    }

    <span style="color:#0000ff;">string</span> str2 = <span style="color:#a31515;">""</span>;
    <span style="color:#0000ff;">foreach</span> (IGrouping<<span style="color:#0000ff;">int</span>, Person> <span style="color:#0000ff;">group</span> <span style="color:#0000ff;">in</span> R2)
    {
        str2 += <span style="color:#0000ff;">group</span>.Key + <span style="color:#a31515;">"/n"</span>;
        <span style="color:#0000ff;">foreach</span> (Person p <span style="color:#0000ff;">in</span> <span style="color:#0000ff;">group</span>)
        {
            str2 += <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"/t{0}:{1}/n"</span>, p.Name, p.Age);
        }
    }

    TextBox1.Text = <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}----------/n{1}"</span>, str1, str2);

<span style="color:#008000;">/* 输出结果:
11
	AA
	DD
	GG
22
	BB
	EE
33
	CC
	FF
----------
11
	AA:11
	DD:11
	GG:11
22
	BB:22
	EE:22
33
	CC:33
	FF:33
*/</span>
}

<span style="color:#008000;">//使用 GroupJoin, 测试效果同上
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 11, 22, 33 }; 
    Person[] pArr = 
    {
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"AA"</span>, Age=11 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"BB"</span>, Age=22 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"CC"</span>, Age=33 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"DD"</span>, Age=11 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"EE"</span>, Age=22 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"FF"</span>, Age=33 },
        <span style="color:#0000ff;">new</span> Person { Name=<span style="color:#a31515;">"GG"</span>, Age=11 }
    };

    <span style="color:#0000ff;">var</span> R1 = nArr.GroupJoin(pArr, n => n, p => p.Age, (n, ps) => <span style="color:#0000ff;">new</span> { MyKey = n, MyNames = ps.Select(p => p.Name) });
    <span style="color:#0000ff;">var</span> R2 = nArr.GroupJoin(pArr, n => n, p => p.Age, (n, ps) => <span style="color:#0000ff;">new</span> { MyKey = n, MyNames = ps });

    <span style="color:#0000ff;">string</span> str1 = <span style="color:#a31515;">""</span>;
    <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">var</span> obj <span style="color:#0000ff;">in</span> R1)
    {
        str1 += obj.MyKey + <span style="color:#a31515;">"/n"</span>;
        <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">string</span> s <span style="color:#0000ff;">in</span> obj.MyNames)
        {
            str1 += <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"/t{0}/n"</span>, s);
        }
    }

    <span style="color:#0000ff;">string</span> str2 = <span style="color:#a31515;">""</span>;
    <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">var</span> obj <span style="color:#0000ff;">in</span> R2)
    {
        str2 += obj.MyKey + <span style="color:#a31515;">"/n"</span>;
        <span style="color:#0000ff;">foreach</span> (<span style="color:#0000ff;">var</span> p <span style="color:#0000ff;">in</span> obj.MyNames)
        {
            str2 += <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"/t{0}:{1}/n"</span>, p.Name, p.Age);
        }
    }

    TextBox1.Text = <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}----------/n{1}"</span>, str1, str2);
}
 


获取指定条件之后的(Skip、SkipWhile)或之前的(Take、TakeWhile):


<pre><span style="color:#008000;">//Skip、SkipWhile
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 3, 2, 4, 3, 5 };

    <span style="color:#0000ff;">var</span> R1 = nArr.Skip(3);                           <span style="color:#008000;">//取第 3 个元素之后的
</span>    <span style="color:#0000ff;">var</span> R2 = nArr.OrderBy(n => n).Skip(3);           <span style="color:#008000;">//先排序, 再取第 3 个元素之后的
</span>    <span style="color:#0000ff;">var</span> R3 = nArr.OrderByDescending(n => n).Skip(3); <span style="color:#008000;">//先倒排序, 再取第 3 个元素之后的
</span>
    <span style="color:#0000ff;">var</span> R4 = nArr.OrderBy(n => n).SkipWhile(n => n <= 3);   <span style="color:#008000;">//先排序(123345), 从不满足条件开始, 之后的
</span>    <span style="color:#0000ff;">var</span> R5 = nArr.SkipWhile((num, index) => num != index); <span style="color:#008000;">// 从第二个元素开始, 数字和序号就不一样了
</span>
    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R1); <span style="color:#008000;">//435
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R2); <span style="color:#008000;">//345
</span>    <span style="color:#0000ff;">string</span> s3 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R3); <span style="color:#008000;">//321
</span>    <span style="color:#0000ff;">string</span> s4 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R4); <span style="color:#008000;">//45
</span>    <span style="color:#0000ff;">string</span> s5 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R5); <span style="color:#008000;">//2435
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}/n{1}/n{2}/n{3}/n{4}"</span>, s1, s2, s3, s4, s5);
}

<span style="color:#008000;">//Take、TakeWhile 用法同上, 只是获取之前的
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 3, 2, 4, 3, 5 };

    <span style="color:#0000ff;">var</span> R1 = nArr.Take(3);
    <span style="color:#0000ff;">var</span> R2 = nArr.OrderBy(n => n).Take(3);
    <span style="color:#0000ff;">var</span> R3 = nArr.OrderByDescending(n => n).Take(3);

    <span style="color:#0000ff;">var</span> R4 = nArr.OrderBy(n => n).TakeWhile(n => n <= 3);
    <span style="color:#0000ff;">var</span> R5 = nArr.TakeWhile((num, index) => num != index);

    <span style="color:#0000ff;">string</span> s1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R1); <span style="color:#008000;">//132
</span>    <span style="color:#0000ff;">string</span> s2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R2); <span style="color:#008000;">//123
</span>    <span style="color:#0000ff;">string</span> s3 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R3); <span style="color:#008000;">//543
</span>    <span style="color:#0000ff;">string</span> s4 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R4); <span style="color:#008000;">//1233
</span>    <span style="color:#0000ff;">string</span> s5 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">""</span>, R5); <span style="color:#008000;">//13
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}/n{1}/n{2}/n{3}/n{4}"</span>, s1, s2, s3, s4, s5);
}
 


All 与 Any:


<pre><span style="color:#008000;">//都满足条件时 All 才返回 True
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">int</span>[] nArr = { 1, 3, 5, 7, 9 };
    <span style="color:#0000ff;">bool</span> b1 = nArr.All(n => n % 2 == 0); <span style="color:#008000;">//False
</span>    <span style="color:#0000ff;">bool</span> b2 = nArr.All(n => n % 2 == 1); <span style="color:#008000;">//True
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(b1, <span style="color:#a31515;">"/n"</span>, b2);
}

<span style="color:#008000;">//其中一个满足条件 Any 就返回 True
</span><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button2_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str1 = <span style="color:#a31515;">"Delphi"</span>;
    <span style="color:#0000ff;">string</span> str2 = <span style="color:#a31515;">"Asp.Net"</span>;
    <span style="color:#0000ff;">string</span> str3 = <span style="color:#a31515;">""</span>;

    <span style="color:#0000ff;">bool</span> b1 = str1.Any();              <span style="color:#008000;">//True
</span>    <span style="color:#0000ff;">bool</span> b2 = str2.Any();              <span style="color:#008000;">//True
</span>    <span style="color:#0000ff;">bool</span> b3 = str3.Any();              <span style="color:#008000;">//False
</span>
    <span style="color:#0000ff;">bool</span> b4 = str1.Any(c => c == <span style="color:#a31515;">'D'</span>); <span style="color:#008000;">//True
</span>    <span style="color:#0000ff;">bool</span> b5 = str2.Any(c => c == <span style="color:#a31515;">'D'</span>); <span style="color:#008000;">//False
</span>    <span style="color:#0000ff;">bool</span> b6 = str2.Any(c => c == <span style="color:#a31515;">'D'</span>); <span style="color:#008000;">//False
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(b1, <span style="color:#a31515;">"/n"</span>, b2, <span style="color:#a31515;">"/n"</span>, b3, <span style="color:#a31515;">"/n"</span>, b4, <span style="color:#a31515;">"/n"</span>, b5, <span style="color:#a31515;">"/n"</span>, b6);
}
 


是否包含(Contains):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"Asp.Net 4.0"</span>;
    <span style="color:#0000ff;">bool</span> b1 = str.Contains(<span style="color:#a31515;">'4'</span>);       <span style="color:#008000;">//True
</span>    <span style="color:#0000ff;">bool</span> b2 = str.Contains(<span style="color:#a31515;">"Net 4.0"</span>); <span style="color:#008000;">//True
</span>    <span style="color:#0000ff;">bool</span> b3 = str.Contains(<span style="color:#a31515;">"Net4.0"</span>);  <span style="color:#008000;">//False
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(b1, <span style="color:#a31515;">"/n"</span>, b2, <span style="color:#a31515;">"/n"</span>, b3, <span style="color:#a31515;">"/n"</span>);
}
 


获取只是唯一的元素(Single、SingleOrDefault):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str = <span style="color:#a31515;">"Microsoft"</span>;
    <span style="color:#0000ff;">char</span> c1, c2, c3, c4, c5, c6;
    c1 = c2 = c3 = c4 = c5 = c6 = <span style="color:#a31515;">'*'</span>;

    <span style="color:#008000;">//Single
</span>    c1 = str.Single(c => c == <span style="color:#a31515;">'M'</span>); <span style="color:#008000;">//M
</span>
    <span style="color:#0000ff;">try</span> { c2 = str.Single(c => c == <span style="color:#a31515;">'o'</span>); }
    <span style="color:#0000ff;">catch</span> (Exception err) { Response.Write(err.Message + <span style="color:#a31515;">"<br/>"</span>); } <span style="color:#008000;">// 序列包含一个以上的匹配元素 
</span>
    <span style="color:#0000ff;">try</span> { c3 = str.Single(c => c == <span style="color:#a31515;">'A'</span>); }
    <span style="color:#0000ff;">catch</span> (Exception err) { Response.Write(err.Message + <span style="color:#a31515;">"<br/>"</span>); } <span style="color:#008000;">// 序列不包含任何匹配元素
</span>
    <span style="color:#008000;">//SingleOrDefault
</span>    c4 = str.SingleOrDefault(c => c == <span style="color:#a31515;">'M'</span>); <span style="color:#008000;">//M
</span>
    <span style="color:#0000ff;">try</span> { c5 = str.SingleOrDefault(c => c == <span style="color:#a31515;">'o'</span>); }
    <span style="color:#0000ff;">catch</span> (Exception err) { Response.Write(err.Message + <span style="color:#a31515;">"<br/>"</span>); } <span style="color:#008000;">// 序列包含一个以上的匹配元素 
</span>
    c6 = str.SingleOrDefault(c => c == <span style="color:#a31515;">'A'</span>); <span style="color:#008000;">// 这不会激发异常
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Format(<span style="color:#a31515;">"{0}{1}{2}{3}{4}{5}"</span>, c1, c2, c3, c4, c5, c6); <span style="color:#008000;">//M**M*
</span>}
 


指定默认空值(DefaultIfEmpty):


<pre><span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Button1_Click(<span style="color:#0000ff;">object</span> sender, <span style="color:#2b91af;">EventArgs</span> e)
{
    <span style="color:#0000ff;">string</span> str1 = <span style="color:#a31515;">"Asp.Net 3.5"</span>;
    <span style="color:#0000ff;">string</span> str2 = <span style="color:#a31515;">""</span>;

    <span style="color:#0000ff;">string</span> r1 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">"|"</span>, str1.DefaultIfEmpty());    <span style="color:#008000;">//A|s|p|.|N|e|t| |3|.|5
</span>    <span style="color:#0000ff;">string</span> r2 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">"|"</span>, str2.DefaultIfEmpty());    <span style="color:#008000;">//
</span>    <span style="color:#0000ff;">string</span> r3 = <span style="color:#0000ff;">string</span>.Join(<span style="color:#a31515;">"|"</span>, str2.DefaultIfEmpty(<span style="color:#a31515;">'*'</span>)); <span style="color:#008000;">//*
</span>
    TextBox1.Text = <span style="color:#0000ff;">string</span>.Concat(r1, <span style="color:#a31515;">"/n"</span>, r2, <span style="color:#a31515;">"/n"</span>, r3);
}

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值