2010-06-29 28 views

Trả lời

27

new { ... } trở thành

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

hoặc

New With {Key ... } nếu bạn muốn sử dụng tính chất chính (cho phép bạn so sánh hai trường hợp loại vô danh nhưng không cho phép các giá trị của những thuộc tính đó sẽ được thay đổi).

Vì vậy, tôi đoán tuyên bố của bạn sẽ trông như thế:

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

Cảm ơn! Cố gắng để viết một cái gì đó rất đơn giản trong VB là khó khăn khó khăn khi làm việc thường xuyên trong C#. –

11

C#:

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

VB tương đương:

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

Ngoài ra,

C#:

new {anotherObj.prop1, anotherObj.prop2} 

VB tương đương:

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

Lưu ý: Các từ khóa chính trong VB tương đương là cần thiết. Khi bạn chỉ định khóa trong VB, thuộc tính sẽ trở thành chỉ đọc và được kiểm tra bằng phương thức bình đẳng VÀ trong C# tất cả các thuộc tính của các loại ẩn danh là chỉ đọc và được kiểm tra theo phương thức bình đẳng.

Xem:

Anonymous Types (C# Programming Guide)

Anonymous Types (Visual Basic)

Các vấn đề liên quan