2011-10-27 15 views

Trả lời

8

Không thể thực hiện việc này thông qua trình chỉnh sửa biểu định kiểu được tích hợp sẵn. Tuy nhiên bạn có thể viết một phương pháp mở rộng mà bạn gọi như sau:

void Main() 
{ 
    // AdventureWorks 
    Contacts.Select (c => new { c.FirstName, c.LastName, NameStyle = c.NameStyle.RedBlue() }).Dump(); 
} 

static class Extensions 
{ 
    public static object RedBlue (this bool value) 
    {  
     string c = value ? "Blue" : "Red"; 
     return Util.RawHtml ("<span style='color:" + c + "'>" + value + "</span>"); 
    } 
} 

Nếu bạn đặt các phương pháp khuyến nông thành một dự án VS và sao chép các DLL vào LINQPad plugins thư mục, nó sẽ tự động có sẵn cho tất cả các truy vấn.

EDIT: Bây giờ bạn có thể xác định phương thức đó trong truy vấn 'Tiện ích mở rộng của tôi' thay vì phải tạo dự án trong VS.

+0

Các phần mở rộng lớp công việc tuyệt vời trong LINQPad khi tôi thêm nó vào truy vấn của tôi, nhưng biên dịch nó thành một DLL riêng biệt không hoạt động. LINQPad đang nói rằng nó không có định nghĩa cho phần mở rộng. Có lẽ có điều gì đó tôi đã bỏ lỡ khi tạo một lớp học trong VS. Tôi không muốn mất thời gian của bạn về điều này vì tôi có thể chờ đợi bản phát hành cuối cùng với plugin được nạp vào. – MADCookie

+1

Tôi đoán bạn đã kiểm tra những điều hiển nhiên ... lớp đó là công khai và không gian tên được nhập (hoặc dễ dàng hơn , bạn có thể định nghĩa nó là không gian tên cấp cao nhất). Bạn đang tham khảo DLL bằng tay từ LINQPad hoặc thả nó vào thư mục plugins? –

+0

Cảm ơn bạn đã kiểm tra rõ ràng! Tôi chỉ không đặt lớp công khai !! Rất tiếc. Cảm ơn sự giúp đỡ của bạn và mẹo tuyệt vời này để tăng cường đầu ra. – MADCookie

3

tôi có thành công với khối mã này trong MyExtensions phác thảo:

void Main() 
{ 
    (!(true.Dump())).Dump(); 
} 

public static class MyExtensions 
{ 
    public static bool Dump (this bool value) 
    {  
     string c = value ? "Blue" : "Red"; 
     Util.RawHtml ("<span style='color:" + c + "'>" + value + "</span>").Dump(); 
     return value; 
    } 
} 
Các vấn đề liên quan