Hace un tiempo atrás realice una implementación de un “proveedor” del motor “Windows Search” para LinQ. El objetivo fue mostrar la versatilidad y facilidad de extender esta nueva característica a diversas  fuentes de datos. Para este propósito realizamos un pequeño proyecto que implementa la interface IQueriable con el objetivo de extender la funcionalidad de LinQ a fuentes de datos de Windows Search.

A continuación veremos algunos ejemplos de uso:


 Uso del “Select”

SystemIndex<SystemSearch> systemIndex ;

var result = (from SystemSearch t in systemIndex  
             
select new { t.ItemName, t.Author,  
                          
t.Shell, t.Kind, t.Language });

foreach (var item in result){

      TestContext.WriteLine(item.ItemName);

} 

 

Uso del Where

SystemIndex<SystemSearch> systemIndex ;

 var result = (from SystemSearch t in systemIndex
              where
t.Kind == new string [] {"document"} || 
                    t.Kind == new string[] { "folder"
               select new { t.ItemName, t.Author, t.Kind,
                            t.Language });

 foreach (var item in result){

        TestContext.WriteLine(item.ItemName);

 }

 

Uso del “Order By”

SystemIndex<SystemSearch> systemIndex ;

  var result = (from SystemSearch t in systemIndex 
              
orderby t.Language

               select
new { t.ItemName, t.Author,
                            t.Kind, t.Language });

 foreach (var item in result){

        TestContext.WriteLine(item.ItemName);

 }

Más sobre este proyecto incluido el código fuente puede encontrarlo aqui:http://www.codeplex.com/SystemSearchToLinQ

 Espero les guste!