2010-06-29 20 views

Respuesta

27

new { ... } se convierte en

New With { ... } en VB.NET,

o

New With {Key ... } si desea utilizar las propiedades clave (que le permite comparar dos instancias de tipo anónimo pero no permite que los valores de esas propiedades para ser cambiadas).

Así que supongo que su declaración se vería así:

.Select(Function(ci) New With {Key _ 
    .CartItem = ci, _ 
    .Discount = DiscountItems.FirstOrDefault(Function(di) di.SKU = ci.SKU) _ 
}) 
+1

Gracias! Intentar escribir algo tan simple en VB es laboriosamente difícil cuando se trabaja regularmente en C#. –

11

C#:

new {name1 = "value1", name2 = "value2"} 

VB equivalente:

New With {Key .name1 = "value1", Key .name2 = "value2"} 

Además,

C#:

new {anotherObj.prop1, anotherObj.prop2} 

VB equivalente:

New With {Key anotherObj.prop1, Key anotherObj.prop1} 

Nota: La palabra clave Clave en equivalentes de VB es necesario. Cuando especifica la clave en VB, la propiedad pasa a ser de solo lectura y se marca en el mismo método Y en C# todas las propiedades de los tipos anónimos son de solo lectura y se marcan en el método Equal.

Ver:

Anonymous Types (C# Programming Guide)

Anonymous Types (Visual Basic)

Cuestiones relacionadas