当前位置: 首页>>代码示例>>C#>>正文


C# StringCollection.OfType方法代码示例

本文整理汇总了C#中System.Collections.Specialized.StringCollection.OfType方法的典型用法代码示例。如果您正苦于以下问题:C# StringCollection.OfType方法的具体用法?C# StringCollection.OfType怎么用?C# StringCollection.OfType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Collections.Specialized.StringCollection的用法示例。


在下文中一共展示了StringCollection.OfType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: StartSearchAsync

    public async Task<IEnumerable<IMediaFile>> StartSearchAsync(StringCollection filesOrDirsCollection) {
      this.IsWorking = true;
      // create the cancellation token source
      this.cancelToken = new CancellationTokenSource();
      // create the cancellation token
      var token = this.cancelToken.Token;

      this.mainTask = Task<IEnumerable<IMediaFile>>.Factory
        .StartNew(() => {
          var results = new ConcurrentQueue<IMediaFile>();

          // get audio files from input collection
          var rawFiles = filesOrDirsCollection.OfType<string>().Where(this.IsAudioFile).OrderBy(s => s).ToList();
          foreach (var rawFile in rawFiles.TakeWhile(rawDir => !token.IsCancellationRequested)) {
            var mf = this.GetMediaFile(rawFile);
            if (mf != null) {
              results.Enqueue(mf);
            }
          }

          // handle all directories from input collection
          var directories = new List<string>();
          foreach (var source in filesOrDirsCollection.OfType<string>().Except(rawFiles).Where(IsDirectory).TakeWhile(source => !token.IsCancellationRequested)) {
            directories.Add(source);
            try {
              directories.AddRange(Directory.EnumerateDirectories(source, "*", SearchOption.AllDirectories).TakeWhile(dir => !token.IsCancellationRequested));
            } catch (Exception e) {
              // System.UnauthorizedAccessException
              Console.WriteLine(e);
            }
          }
          foreach (var rawDir in directories.Distinct().OrderBy(s => s).TakeWhile(rawDir => !token.IsCancellationRequested)) {
            this.doFindFiles(token, rawDir, results);
          }

          return results;
        }, token, TaskCreationOptions.LongRunning, TaskScheduler.Current);

      var mediaFiles = await this.mainTask;
      this.IsWorking = false;
      return mediaFiles;
    }
开发者ID:dotob,项目名称:simple-music-player,代码行数:42,代码来源:FileSearchWorker.cs

示例2: GetQuerySchema

 internal XmlSchema GetQuerySchema()
 {
     var schema = new XmlSchema {TargetNamespace = QuerySpace};
     schema.Namespaces.Add("", QuerySpace);
     var allParameters = new StringCollection();            
     foreach (var queriesForResourceType in _baseQueries.GroupBy(k => k.ResourceKey)
                                                    .Where(k=>_registrationStorage.IsResourceRegistered(k.Key)))
     {
         
         var group = new XmlSchemaAttributeGroup();
         group.Name = _registrationStorage[queriesForResourceType.Key].ResourceName.Replace(" ", "_");
         var parameters = queriesForResourceType.SelectMany(k => k.Arguments)
                                                .Distinct(_parameterComparer)
                                                .ToArray();
        
         allParameters.AddRange(parameters);
         foreach (var attr in parameters.Select(k => new XmlSchemaAttribute { RefName = new XmlQualifiedName(k, QuerySpace) }))
         {
             group.Attributes.Add(attr);
         }
         schema.Items.Add(group);
     }
    foreach(var attr in allParameters.OfType<string>().Distinct().Select(
         k =>
         new XmlSchemaAttribute
             {
                 Name = k,                        
                 SchemaType = XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.String)
             }))
    {
        schema.Items.Add(attr);
    }
     
     return schema;
 }
开发者ID:kayanme,项目名称:Dataspace,代码行数:35,代码来源:QueryStorage.cs


注:本文中的System.Collections.Specialized.StringCollection.OfType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。