2009-12-14 15 views
6

Dado el siguiente código:Distinto expresarse utilizando la llamada consulta incrustado en lugar de una llamada al método

string[] colors = {"red","green","blue","red","green","blue"}; 
var distinctColors = (from c in colors select c).Distinct(); 
distinctColors.Dump(); 

¿Es posible plegar la llamada .Distinct() en la sintaxis de consulta incorporado?

algo así como

select distinct color from TableofColors 
+2

Por cierto, se llama consulta Comprensión de sintaxis. – SLaks

+4

@SLaks: O simplemente "expresiones de consulta" según la sección 7.15 de la especificación. –

Respuesta

8

C# 's sintaxis de expresión de consulta no incluye "distinta". VB hace, sin embargo - por ejemplo, de la MSDN docs for VB's Distinct clause:

// VB 
Dim customerOrders = From cust In customers, ord In orders _ 
        Where cust.CustomerID = ord.CustomerID _ 
        Select cust.CompanyName, ord.OrderDate _ 
        Distinct 

El equivalente C# tendría que llamar explícitamente Distinct() en notación de punto.

Sin embargo, su ejemplo todavía se puede simplificar:

string[] colors = {"red","green","blue","red","green","blue"}; 
var distinctColors = colors.Distinct(); 
distinctColors.Dump(); 

no creo que se haya utilizar expresiones de consulta a utilizar LINQ :)

1

sintaxis comprensión de consulta int T-SQL no soporta el método Distinct.

En su caso, simplemente puede escribir colors.Distinct(); no estás haciendo nada con la expresión de consulta.

2

No hay una sintaxis de consulta incrustada distintiva en C# hasta donde yo sé. Esto está tan cerca como se pone:

var distinctColors = (from color in colors 
         select color).Distinct() 
0

Puede probar este

var dis = from c in colors 
    group c by c; 

foreach (var cVal in dis) 
    { 
     string s = cVal.Key; 
    } 
+0

Esto devolverá un 'IEnmerable >', no un 'IEnumerable '. – SLaks

+0

Debe escribir 'desde c en el grupo de colores c por c en c seleccione c.Key'. Además, probablemente sea un poco más lento que 'Distinct'. – SLaks

+0

SLaks. ¿Tienes algún grupo de pruebas de estadísticas por más lento que n? –

Cuestiones relacionadas