A linguagem Linq também permite trabalhar com coleção de objetos. Na cláusula 
                where podemos realizar filtros sobre os atributos de objetos de forma semelhante 
                ao que foi feito com os elementos de um array.
            
            Sintaxe
            
from objeto in colecao
where <condicao>
select  objeto; 
            
                No exemplo 2 abaixo, a query Linq apresentada irá realizar um filtro em que todos elementos 
                de um array de objetos retornando aqueles que possuam código 3 ou nome que iniciado por "Fu".
            
            Exemplo 2
            
using System;
using System.Linq;
using System.Collections.Generic;
public class Objeto
{
	public int codigo;
	public string nome;
}
public class Program
{
	public static void Main()
	{
		Objeto[] array = { 
				 new Objeto(){ codigo = 1, nome = "Fulano"},
				 new Objeto(){ codigo = 2, nome = "Ciclano"},
				 new Objeto(){ codigo = 3, nome = "Beltrano"},
			              };
		
		IEnumerable<Objeto>  retorno = from elemento in array
						               where elemento.codigo == 3 || elemento.nome.StartsWith("Fu")
						               select elemento;
		
		foreach( var e in retorno)
			Console.Write("codigo:{0} nome:{1}",e.codigo,e.nome);
	}
}
            Saída
            
codigo:1  nome:Fulano
codigo:3  nome:Beltrano
            
                Nos exemplos anteriores, retornamos objetos de um mesmo tipo de dado que esta contido em uma
                coleção. Porém,  podemos utilizar a cláusula select para retornar objetos de outros 
                tipos utilizando o comando new.
            
            Sintaxe
            
select new nome_classe() { atributo1 = valor1, atributoN = valorN };
            
                No exemplo 3 abaixo, a query Linq apresentada irá realizar um filtro em todos 
                elementos de um array de objetos retornando uma nova coleção de objetos da classe Objeto2
                contendo os códigos dos elementos do array.
            
            Exemplo 3
            
using System;
using System.Linq;
using System.Collections.Generic;
public class Objeto
{
	public int codigo;
	public string nome;
}
public class Objeto2
{
	public int id;
}
public class Program
{
	public static void Main()
	{
		Objeto[] array = { 
				new Objeto(){ codigo = 1, nome = "Fulano"},
				new Objeto(){ codigo = 2, nome = "Ciclano"},
				new Objeto(){ codigo = 3, nome = "Beltrano"},
				 };
		var  retorno = from elemento in array
			           select new Objeto2 { id = elemento.codigo};
		foreach( Objeto2 obj2 in retorno)
		{
			Console.WriteLine(obj2.id);
		}
	}
}
            Saída
            
1
2
3