Posts recientes

El contenido de este blog tiene una licencia Creative Commons.
Creative Commons

Solucionar problema con la intercalación desde linq

En caso de necesitar realitzar búsquedas contra el motor de base de datos sin tener en consideración mayúsculas/minusculas, acentos y otros símbolos de puntuación, desde SQL Server es necesario que la base de datos use una intercalación *_CI_AI
Pero aunque la base de datos esté bien configurada para que las consultas sean no sensitivas a este tipo de carácteres, si se realiza la consulta desde nuestra aplicación la consulta no será efectiva puesto que desde linq no se explota la facilidad que nos ofrece la base de datos.
Para solucionar esto hay un método que es el que muestro en el siguiente código:
string ntext = new string("TEXTO_A_BUSCAR".Normalize(NormalizationForm.FormD).Where(c => c < 128).ToArray());
Lista = Lista.Where(x => (UTF8Encoding.UTF8.GetString(UTF8Encoding.GetEncoding("ISO-8859-8").GetBytes(x.CAMPO_BD)).IndexOf(ntext, StringComparison.InvariantCultureIgnoreCase) > -1)).ToList();

En la primera instrucción normalizamos el texto a localizar en la base de datos, y en la segunda se realiza la búsqueda en sí misma sobre el campo de la base de datos con el cual deseamos hacer el filtro.

Espero que os sirva de ayuda.

Autor: David Acosta Lesmes
Publicado: 03/02/2012  14:43 | 0  Comentarios | 0  Enlaces a este post

LINQPad, la herramienta para nuestras consultas LINQ

imageMuchos de vosotros conoceréis LINQPad , la herramienta que nos permite crear y ejecutar consultas LINQ de forma fácil y asistida. Las últimas versiones permiten conectar con orígenes diversos de datos y hacer LINQ contra objetos, SQL, Entity Framework, etc. Además incorpora una ayuda con muchísimos ejemplos preparados para ejecutar que nos permiten indagar y aprender los secretos más íntimos de esta tecnología.

Os animo a probarlo. Lo podéis descargar desde su web, http://www.linqpad.net. Sin coste alguno podéis descargar la herramienta básica que ya nos quita de muchos apuros. También podemos adquirir el producto profesional que nos ofrece algunas funcionalidades adicionales interesantes, como el autocompletado de las consultas.

 image

Autor: Rubén Claramunt Vicente
Publicado: 09/06/2011  13:27 | 0  Comentarios | 0  Enlaces a este post

LINQ to ADO.Net

LINQ to ADO.NET permite consultar objetos enumerables en ADO.NET mediante el uso del modelo de programación de LINQ (Language-Integrated Query).

Hay tres tecnologías ADO.NET Language-Integrated Query (LINQ) distintas: LINQ to DataSet, LINQ to SQL y LINQ to Entities. LINQ to DataSet proporciona una capacidad de consulta más rica y optimizada sobre Dataset, LINQ to SQL permite consultar directamente los esquemas de la base de datos de SQL Server y LINQ to Entities permite consultar Entity Data Model.

LINQ to DataSet

DataSet es uno de los componentes más utilizados en ADO.NET y es un elemento clave del modelo de programación desconectado en el que se basa ADO.NET. A pesar de este punto destacado, DataSet tiene funciones de consulta limitadas.

LINQ to DataSet permite integrar funciones de consulta más completas en DataSet mediante la misma funcionalidad de consulta que está disponible para muchos otros orígenes de datos.

LINQ to SQL

LINQ to SQL proporciona una infraestructura en tiempo de ejecución para administrar los datos relacionales como objetos. En LINQ to SQL, el modelo de datos de una base de datos relacional se asigna a un modelo de objetos expresado en el lenguaje de programación del programador. Al ejecutar la aplicación, LINQ to SQL convierte las consultas integradas en el lenguaje del modelo de objetos a SQL y las envía a la base de datos para su ejecución. Cuando la base de datos devuelve los resultados, LINQ to SQL los vuelve a convertir en objetos que se pueden manipular.

LINQ to SQL incluye compatibilidad con los procedimientos almacenados y las funciones definidas por el usuario en la base de datos, así como con la herencia del modelo de objetos.

LINQ to Entities

A través del Entity Data Model, los datos relacionales se exponen como objetos en el entorno .NET. Esto hace de la capa de objetos un objetivo idóneo para la compatibilidad con LINQ, ya que permite a los programadores formular consultas en la base de datos con el lenguaje utilizado para generar la lógica empresarial. Esta función se conoce como LINQ to Entities.

Autor: David Acosta Lesmes
Publicado: 19/01/2011  15:08 | 0  Comentarios | 0  Enlaces a este post

Generación RSS con linq.

Os dejo a mano un método para la generación de un RSS haciendo uso de las herramientas que facilita Linq para la generación de XML's trabajando contra un EntityModel.
using System;
using System.Xml;
using System.Xml.Linq;
using System.Linq;

public XDocument getXmlData()
{
   using (EntitiesDefinition ent = new EntitiesDefinition()) 
   {
   XDocument xml = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"), 
      new XElement("rss", new XAttribute("version", "2.0"), 
      new XElement("channel", 
      new XElement("title", "TITULO"), 
      from tabla in ent.GetInfo() 
      orderby tabla.Fecha descending 
      select 
         new XElement("item", 
         new XElement("title", tabla.Campo1 + " " + tabla.Campo2), 
         new XElement("pubDate", tabla.Fecha), 
         new XElement("description", tabla.Descripcion) 
         ) 
      ))); 
      return xml; 
   } 
} 

Esta función devolvería un xml(formato RSS) que ya puede ser interpretado de forma correcta por los navegadores.

En caso de necesidad de más información sobre el formato RSS 2.0 o ver todos los tags disponibles, dejo aquí una página sobre la especificación de RSS 2.0

Espero os sirva de ayuda.

 

Autor: David Acosta Lesmes
Publicado: 27/08/2010  11:45 | 0  Comentarios | 0  Enlaces a este post