虽然不懂linq,但是你这样写跟封装成方法然后自己写循环还有任何区别?
select不是应该配合where子句使用吗

解决方案 »

  1.   


                IEnumerable<string> strings = getStrings();
                var dateTimes = strings.AsParallel().Where(s =>
                {
                    DateTime dt;
                    var success = DateTime.TryParse(s, out dt);               return success;
                });
      

  2.   

    如果你想要返回的是日期数组            IEnumerable<string> strings = getStrings();
                var dateTimes = strings.AsParallel().Where(s =>
                {
                    DateTime dt;
                    var success = DateTime.TryParse(s, out dt);               return success;
                }).Select(s=>DateTime.Parse(s));
      

  3.   

    虽然不知道里面怎么写,我想不写if语句,在结果集上RemoveAll(dt => dt == DateTime.MinValue);
      

  4.   

    或者            IEnumerable<string> strings = getStrings();
                var dateTimes = strings.AsParallel().Select(s =>
                {
                    DateTime dt;
                    var success = DateTime.TryParse(s, out dt);                if (!success)
                    {
                        //这里我不想在结果集里要这个元素了,怎么写呢
                       return DateTime.MinValue;
                    }                return dt;
                }).Where(s=>s!=DateTime.MinValue);
      

  5.   

    先where再select(数据量大,符合条件的数据少,用这个)
    或者先select再where(where的条件很复杂,先select下写着比较清晰)
    总之不能合并
      

  6.   

    select的功能是把符合结果的数据,组装成你想要的数据的,
    在select之前最好先where
      

  7.   

    如果用linq的表达式的话,他会自动处理,如果你直接调整静态扩展的方法,还是自己注意一点。
      

  8.   

    待会试试看,之前一般没这么写,都是where+select。