Herramientas de usuario

Herramientas del sitio


fw:othersnet:linq

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:othersnet:linq [2010/03/02 13:21]
alfred
fw:othersnet:linq [2020/05/09 09:25] (actual)
Línea 315: Línea 315:
  
 ===== Otros ===== ===== Otros =====
 +
  
 ==== let ==== ==== let ====
-La clausula ''​let''​ permite+La clausula ''​let''​ permite ​crear una variable dentro del ámbito de la query y utilizarla en la condición.  
 + 
 +<code csharp>​ 
 +var lArrivals = from a in db.PIU_ARRIVALS 
 +                let t = (DateTime.Now - a.updatedLocalTime) 
 +                where (t.Seconds > seconds) 
 +                select a; 
 +</​code>​ 
 +... O ...
 <code csharp> <code csharp>
 from car in root.Elements("​car"​) from car in root.Elements("​car"​)
Línea 340: Línea 349:
 }; };
 </​code>​ </​code>​
 +
 +
 +
  
 ===== Ejemplos ===== ===== Ejemplos =====
Línea 392: Línea 404:
         where (p.IIDPARADA == id)         where (p.IIDPARADA == id)
         select p).ToList();​         select p).ToList();​
 +</​code>​
 +=== Ejemplo 3 (NOT IN) ===
 +<​code>​
 +var query =
 +    from c in dc.Customers
 +    where !(from o in dc.Orders
 +            select o.CustomerID)
 +           ​.Contains(c.CustomerID)
 +    select c;
 +foreach (var c in query) Console.WriteLine( c );
 +</​code>​
 +=== Ejemplo 4 (FindAll y ForEach) ===
 +<​code>​
 +static void DisplayInstalledApplications2()
 +{
 +  string registryKey =
 +    @"​SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";​
 +
 +  using (Microsoft.Win32.RegistryKey key = 
 +    Registry.LocalMachine.OpenSubKey(registryKey))
 +  {
 +    (from a in key.GetSubKeyNames()
 +      let r = key.OpenSubKey(a)
 +      select new
 +      {
 +        Application = r.GetValue("​DisplayName"​)
 +      }).ToList()
 +      .FindAll(c => c.Application != null)
 +      .ForEach(c => Console.WriteLine(c.Application));​
 +  }
 +}
 +</​code>​
 +=== Cálculo del tamaño de un directorio ===
 +<code csharp>
 +static long DirectorySize(DirectoryInfo dInfo, bool includeSubDir) {
 +  // Enumerate all the files
 +  long totalSize = dInfo.EnumerateFiles()
 +    .Sum(file => file.Length);​
 +  // If Subdirectories are to be included
 +  if (includeSubDir)
 +  {
 +    // Enumerate all sub-directories
 +    totalSize += dInfo.EnumerateDirectories()
 +      .Sum(dir => DirectorySize(dir,​ true));
 +  }
 +  return totalSize;
 +}
 </​code>​ </​code>​
  
fw/othersnet/linq.1267536110.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)