Pesquisa

sexta-feira, 30 de janeiro de 2009

Classe List<T>

Alguns dos métodos mais úteis da classe List<T> são:
List<Process> listaProcesso = new List<Process>(Process.GetProcesses());

//retorna somente o primeiro encontrado
Process processo = listaProcesso.Find(delegate(Process p)
   {
   return p.ProcessName.Equals("dllhost");
   });

//retora todos os encontrados
List<Process> listaProcessoContemLetraM = listaProcesso.FindAll(delegate(Process p)
   {
   return p.ProcessName.Contains("m");
   });

//remove todos os encontrados
listaProcesso.RemoveAll(new Predicate<Process>(delegate(Process processoRemover)
   {
   return processoRemover.ProcessName.Equals("dllhost");
   }));

//ordem alfabética
listaProcesso.Sort(new Comparison<Process>( delegate(Process p1, Process p2)
   {
   return p1.ProcessName.CompareTo(p2.ProcessName);
   }));

//existe um pelo menos
Boolean existe = listaProcesso.Exists(delegate(Process p)
   {
   return p.ProcessName.Equals("dllhost");
   });

//existe em todos
Boolean existeTodos = listaProcesso.TrueForAll(delegate(Process p)
   {
   return p.MachineName.Equals(System.Environment.MachineName);
   });

//procura o índice
int indiceProcesso = listaProcesso.FindIndex(delegate(Process p)
   {
   return p.ProcessName.Equals("devenv");
   });

//altera o valor de cada um dos objetos da List
List<String> listaNome = new List<string>();
listaNome.Add("A");
listaNome.Add("B");
listaNome.Add("C");
listaNome.Add("D");

listaNome.ConvertAll<String>(delegate(String n)
   {
   return n.ToLower();
   });

//passar por todos os items da List
listaNome.ForEach(delegate(String n)
   {
   Console.WriteLine(n.ToString());
   });

segunda-feira, 26 de janeiro de 2009

Reflection - Navegando nas propriedades e nos métodos do objeto

Para navegar/identificar as propriedades e métodos de um objeto basta usar reflection.
Essa navegação tem utilidade fazer busca em todas as propriedade do objeto, ou "invocar" todos os métodos do mesmo.

Segue abaixo um exemplo simples de como funciona.
Console.WriteLine("Passando uma a uma das propriedades do objeto");
System.Reflection.PropertyInfo[] colecaoPropriedade = texto.GetType().GetProperties();
foreach (System.Reflection.PropertyInfo propriedade in colecaoPropriedade)
{
Console.WriteLine(propriedade.ToString());
}

Console.WriteLine("Passando um a um dos metodos do objeto");
System.Reflection.MethodInfo [] colecaoMetodo = texto.GetType().GetMethods();
foreach (System.Reflection.MethodInfo metodo in colecaoMetodo)
{
Console.WriteLine(metodo.ToString());
}

sexta-feira, 23 de janeiro de 2009

Select com ordenação aleatória

Considerando que a coluna Codigo é do tipo uniqueidentifier, para uma consulta sql retornar em uma order aleatória basta fazer o seguinte:
SELECT
Codigo,
Nome
FROM
Tabela
ORDER BY NEWID()
Créditos: Jean Charles Bulinckx

Site em manutenção

Para fazer manutenção em seu site e manter uma página amigável indicando a sua manutenção, ou simplismente tirá-lo do ar crie a página App_offline.htm no diretório raíz da aplicação. Assim independente da página que o usuário acessar, entrará nesta página.

Mais informacões aqui e aqui.

sexta-feira, 5 de dezembro de 2008

Verificar registros duplicados em tabela SQL

Script para verificar a existência de registros duplicados em um determinado campo de uma tabela.
SELECT
COUNT(*),
Coluna
FROM
Tabela
GROUP BY
Coluna
HAVING COUNT(*) > 1

Exportar HTML para um arquivo Excel

Existe uma DIV que contém uma série de tabelas, criadas através de um asp:repeater.
Nesta DIV é colocado um Runat="Server" e um ID="divResultado".

Abaixo, os procedimentos necessários para exportá-la para uma tabela excel.
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Cookies.Clear();
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.CacheControl = "private";

Response.AddHeader("content-disposition", "attachment;filename=" + "Teste1"+ ".xls");
Response.Charset = "";
Response.ContentType = "application/vnd.xls";

System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
divResultado.RenderControl(htmlWrite);

Response.Write( "" );
Response.Charset="utf-8";
Response.Write(stringWrite.ToString());
Response.End();

Como não perder o foco no PostBack

No framework 2.0, simplismente adicionar a propriedade MaintainScrollPositionOnPostback como "true" na página.
<%@ Page Language="C#" MaintainScrollPositionOnPostback="true"
AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
Já no framework 1.1, é necessario criar âncoras na página.
private void AncoraReconhecimentoEquipe()
{
if(IsPostBack)
{
Page.RegisterStartupScript("Ancora", "<script>location.hash='#Lugar';</script>");
}
}
para que isso funcione, é necessário colocar um
<a name="Lugar"></a>
no html

quinta-feira, 4 de dezembro de 2008

Atalho útil SQL

Alt+F1

Por exemplo:
existe a tabela Livro no banco de dados,

escreva [Livro], selecione-o, e aperte Alt+F1

assim, você poderá visualizar os campos, relacionamentos, etc... desta tabela

segunda-feira, 1 de dezembro de 2008

Primeiro post

Falta de criatividade para o título do primeiro post né?
Só para esclarecer a utilidade o blog:

Como trabalho na área de TI, existem milhões de informações, truques e dicas que descubro no dia-a-dia que são extremamente úteis, porém existem dois problemas, eu esqueço-as, e também não consigo compartilhá-las.
Então, a solução para foi criar um blog "profissional".

Bom, pelo menos uma coisa é certa, os próximos títulos serão melhores.