LINQ之Where

返回LINQ大全首页

Where()

使用Where()可以获取序列中满足指定条件的所有元素。
MSDN
public static IEnumerable<TSource> Where<TSource>( this IEnumerable<TSource> source, Func<TSource, bool> predicate );

代码示例:

public static class Program
{
    static void Main( string[] args )
    {
        int[]       dataA   = new int[] { 0, 1, 2, 3, 4 };
        List<float> dataB   = new List<float>() { 1.5f, 1.3f, 3.2f };
        string[]    dataC   = new string[] { "正一郎", "清次郎", "誠三郎", "征史郎" };

        // 偶数
        IEnumerable<int>    dataA_F = dataA.Where( value => value % 2 == 0 );
        // 小于2
        IEnumerable<float>  dataB_F = dataB.Where( value => value < 2.0f );
        // 长度小于5
        IEnumerable<string> dataC_F = dataC.Where( value => value.Length < 5 );

        System.Console.WriteLine( "dataA       :{0}", dataA.Text() );
        System.Console.WriteLine( "dataA Filter:{0}", dataA_F.Text() );
        System.Console.WriteLine( "dataB       :{0}", dataB.Text() );
        System.Console.WriteLine( "dataB Filter:{0}", dataB_F.Text() );
        System.Console.WriteLine( "dataC       :{0}", dataC.Text() );
        System.Console.WriteLine( "dataC Filter:{0}", dataC_F.Text() );

        System.Console.ReadKey();
    }

    public static string Text( this IEnumerable i_source )
    {
        string text = string.Empty;
        foreach( var value in i_source )
        {
            text += string.Format( "[{0}], ", value );
        }
        return text;
    }
} 

dataA :[0], [1], [2], [3], [4],
dataA Filter:[0], [2], [4],
dataB :[1.5], [1.3], [3.2],
dataB Filter:[1.5], [1.3],
dataC :[正一郎], [清次郎], [誠三郎], [征史郎],
dataC Filter:[正一郎], [清次郎], [誠三郎], [征史郎],

Where()也可以在条件中处理序列的索引。条件中第二个int参数为索引,具体看下面示例。
MSDN
public static IEnumerable<TSource> Where<TSource>( this IEnumerable<TSource> source, Func<TSource, int, bool> predicate );

代码示例:

public static class Program
{
    static void Main( string[] args )
    {
        int[]       dataA   = new int[] { 0, 1, 2, 3, 4 };
        List<float> dataB   = new List<float>() { 1.5f, 1.3f, 3.2f };
        string[]    dataC   = new string[] { "正一郎", "清次郎", "誠三郎", "征史郎" };

        // 索引和value相等
        IEnumerable<int>    dataA_F = dataA.Where( ( value, index ) => value == index );
        // 索引为偶数
        IEnumerable<float>  dataB_F = dataB.Where( ( value, index ) => index % 2 == 0 );
        // 索引为5
        IEnumerable<string> dataC_F = dataC.Where( ( value, index ) => index == 5 );

        System.Console.WriteLine( "dataA       :{0}", dataA.Text() );
        System.Console.WriteLine( "dataA Filter:{0}", dataA_F.Text() );
        System.Console.WriteLine( "dataB       :{0}", dataB.Text() );
        System.Console.WriteLine( "dataB Filter:{0}", dataB_F.Text() );
        System.Console.WriteLine( "dataC       :{0}", dataC.Text() );
        System.Console.WriteLine( "dataC Filter:{0}", dataC_F.Text() );

        System.Console.ReadKey();
    }

    public static string Text( this IEnumerable i_source )
    {
        string text = string.Empty;
        foreach( var value in i_source )
        {
            text += string.Format( "[{0}], ", value );
        }
        return text;
    }
} 

dataA :[0], [1], [2], [3], [4],
dataA Filter:[0], [1], [2], [3], [4],
dataB :[1.5], [1.3], [3.2],
dataB Filter:[1.5], [3.2],
dataC :[正一郎], [清次郎], [誠三郎], [征史郎],
dataC Filter:
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我寄人间雪满头丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值