// Create a customer list with sample data private static List CreateC dịch - // Create a customer list with sample data private static List CreateC Việt làm thế nào để nói

// Create a customer list with samp

// Create a customer list with sample data private static List CreateCustomerList()
{ // Same as in Example 13-1 } } }
Output: (Same as in Example 13-1)
Example 13-5 searches for customers whose first name is “Donna” using a query expression with a where clause. Here’s the original code from Example 13-1:
IEnumerable result = from customer in customers where customer.FirstName == "Donna" select customer; Here is the extension Where() method:
IEnumerable result = customers.Where(customer => customer.FirstName == "Donna"); You may have noticed that the select clause seems to have vanished in this example. For details on this, please see the sidebar, “Whither the select Clause?” (And try to remember, as Chico Marx reminded us, “There ain’t no such thing as a Sanity Clause.”)
Whither the select Clause? The selectisomittedbecauseweusetheresultingcustomerobjectwithoutprojecting itintoadifferentform.Therefore,the Where() methodfromExample 13-4isthesame as this: IEnumerable result = customers.Where(customer => customer.FirstName == "Donna").Select(customer => customer); If a projection of results is required, you will need to use the Select method. For instance, if you want to retrieve Donna’s email address instead of the whole customer object, you can use the following statement: IEnumerable result = customers.Where(customer => customer.FirstName == "Donna") .Select(customer => customer.EmailAddress);
Recall that Customers is of type List, which might lead you to think that List must have implemented the Where method to support LINQ. It does not. The Where method is called an extension method because it extends an existing type. Before we go into more details in this example, let’s take a closer look at extension methods.
Defining and Using Extension Methods C# 3.0 introduces extension methods that provide the ability for programmers to add methods to existing types. For instance, System.String does not provide a Right() function that returns the rightmost n characters of a string. If you use this functionality a lot in your application, you may have considered building and adding it to your library. However, System.String is defined as sealed, so you can’t subclass it. It is not a partial class, so you can’t extend it using that feature. Of course, you can’t modify the .NET core library directly either. Therefore, you would have to define your own helper method outside of System.String and call it with syntax such as this:
MyHelperClass.GetRight(aString, n) This is not exactly intuitive. With C# 3.0, however, there is a more elegant solution. You can actually add a method to the System.String class; in other words, you can extend the System.String class without having to modify the class itself. Such a method is called an extension method. Example 13-6 demonstrates how to define and use an extension method
Example 13-6. Defining and using extension methods
using System;
namespace Programming_CSharp_Extensions { // Container class for extension methods. public static class ExtensionMethods { // Returns a substring containing the rightmost // n characters in a specific string. public static string Right(this string s, int n) { if (n < 0 || n > s.Length) return s; else return s.Substring(s.Length - n); } }
public class Tester { public static void Main() { string hello = "Hello"; Console.WriteLine("hello.Right(-1) = {0}", hello.Right(-1)); Console.WriteLine("hello.Right(0) = {0}", hello.Right(0)); Console.WriteLine("hello.Right(3) = {0}", hello.Right(3)); Console.WriteLine("hello.Right(5) = {0}", hello.Right(5)); Console.WriteLine("hello.Right(6) = {0}", hello.Right(6));
} } }
Output: hello.Right(-1) = Hello hello.Right(0) = hello.Right(3) = llo hello.Right(5) = Hello hello.Right(6) = Hello
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Tạo một danh sách khách hàng với dữ liệu mẫu danh sách riêng tĩnh CreateCustomerList(){/ / Tương tự như trong ví dụ 13-1}} }Đầu ra: (tương tự như trong ví dụ 13 - 1)Ví dụ 13-5 tìm kiếm khách có tên là "Donna" bằng cách sử dụng một biểu thức truy vấn với một mệnh đề. Đây là mã gốc từ ví dụ 13-1:IEnumerable kết quả = từ khách hàng khách hàng nơi khách hàng. FirstName == "Donna" chọn khách hàng; Đây là phần mở rộng Where() phương pháp:IEnumerable kết quả = khách. Nơi (khách hàng = > khách hàng. FirstName == "Donna"); Bạn có thể nhận thấy rằng các mệnh đề select dường như đã biến mất trong ví dụ này. Đối với thông tin chi tiết về điều này, xin vui lòng xem bên, "đi đâu các mệnh đề select?" (Và hãy nhớ, như Chico Marx nhắc nhở chúng ta, "không có những điều như một điều khoản Sanity.")Đi đâu các mệnh đề chọn? Selectisomittedbecauseweusetheresultingcustomerobjectwithoutprojecting itintoadifferentform. Do đó, Where() methodfromExample 13-4isthesame như thế này: IEnumerable kết quả = khách. Nơi (khách hàng = > khách hàng. FirstName == "Donna"). Chọn (khách hàng = > khách hàng); Nếu một dự của kết quả là cần thiết, bạn sẽ cần sử dụng phương pháp chọn. Ví dụ, nếu bạn muốn lấy địa chỉ email của Donna thay vì đối tượng khách hàng toàn bộ, bạn có thể sử dụng các câu sau đây: IEnumerable kết quả = khách. Nơi (khách hàng = > khách hàng. FirstName == "Donna"). Chọn (khách hàng = > khách hàng. EmailAddress);Nhớ lại rằng khách hàng là thuộc loại danh sách, mà có thể khiến bạn phải suy nghĩ rằng danh sách phải thực hiện ở đâu các phương pháp hỗ trợ LINQ. Bây giờ thì không. Đâu là phương pháp được gọi là một phương pháp mở rộng vì nó kéo dài một loại hiện có. Trước khi chúng tôi đi vào chi tiết hơn trong ví dụ này, chúng ta hãy có một cái nhìn sâu hơn về phương pháp mở rộng.Defining và sử dụng phần mở rộng phương pháp C# 3.0 giới thiệu phương pháp mở rộng cung cấp khả năng cho các lập trình để thêm các phương pháp hiện có các loại. Ví dụ, System.String không cung cấp một hàm Right() trả về các ký tự n bìa phải của một chuỗi. Nếu bạn sử dụng chức năng này rất nhiều trong ứng dụng của bạn, bạn có thể đã coi việc xây dựng và thêm nó vào thư viện của bạn. Tuy nhiên, System.String được định nghĩa là niêm phong, vì vậy bạn không thể phân lớp nó. Nó không phải là một lớp học phần, do đó bạn không thể mở rộng nó bằng cách sử dụng tính năng đó. Tất nhiên, bạn không thể sửa đổi các thư viện lõi .NET trực tiếp một trong hai. Vì vậy, bạn sẽ phải xác định riêng của bạn phương pháp trợ giúp bên ngoài của System.String và gọi nó với cú pháp như thế này:MyHelperClass.GetRight (aString, n) là trực quan không chính xác. Với C# 3.0, Tuy nhiên, có một giải pháp thanh lịch hơn. Bạn thực sự có thể thêm một phương pháp lớp System.String; nói cách khác, bạn có thể mở rộng lớp System.String mà không cần phải sửa đổi các lớp học riêng của mình. Một phương pháp được gọi là một phương pháp mở rộng. Ví dụ 13-6 chứng tỏ làm thế nào để xác định và sử dụng một phương pháp mở rộngVí dụ 13-6. Xác định và sử dụng các phương pháp mở rộngsử dụng hệ thống;không gian tên Programming_CSharp_Extensions {/ / Container lớp học cho các phần mở rộng phương pháp. khu vực tĩnh lớp ExtensionMethods {/ / trả về một xâu con chứa các bìa phải / / n ký tự trong một chuỗi cụ thể. khu vực tĩnh string quyền (này chuỗi s, int n) {nếu (n < 0 || n > s.Length) trả lại s; khác trở lại s.Substring (s.Length - n);}} công cộng lớp Tester {công tĩnh void Main() {chuỗi chào = "Xin chào"; Console.WriteLine ("Xin chào. Right(-1) = {0} ", xin chào. Right(-1)); Console.WriteLine ("Xin chào. Right(0) = {0} ", xin chào. Right(0)); Console.WriteLine ("Xin chào. Right(3) = {0} ", xin chào. Right(3)); Console.WriteLine ("Xin chào. Right(5) = {0} ", xin chào. Right(5)); Console.WriteLine ("Xin chào. Right(6) = {0} ", xin chào. Right(6)); } } }Đầu ra: Xin chào. Right(-1) = xin chào Xin chào. Right(0) = xin chào. Right(3) = xin chào llo. Right(5) = xin chào Xin chào. Right(6) = xin chào
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
// Tạo một danh sách khách hàng với dữ liệu mẫu tin Danh sách tĩnhCreateCustomerList ()
{// Tương tự như trong Ví dụ 13-1}}}
Output: (Tương tự như trong Ví dụ 13-1)
Ví dụ 13-5 tìm kiếm những khách hàng mà tên đầu tiên là "Donna" sử dụng một biểu thức truy vấn với một điều khoản trong đó. Dưới đây là các mã gốc từ Ví dụ 13-1:
IEnumerablekết quả = từ khách hàng trong khách hàng, nơi customer.FirstName == "Donna" chọn khách hàng; Dưới đây là phần mở rộng ở đâu () phương pháp:
IEnumerablekết quả = customers.Where (khách hàng => customer.FirstName == "Donna"); Bạn có thể nhận thấy rằng các điều khoản lựa chọn dường như đã biến mất trong ví dụ này. Để biết chi tiết về vấn đề này, xin vui lòng xem bên, "đi đâu các khoản chọn?" (Và hãy nhớ, như Chico Marx nhắc nhở chúng ta, "Có phải là không có những điều như một khoản Sanity.")
Đi đâu các khoản chọn? Các selectisomittedbecauseweusetheresultingcustomerobjectwithoutprojecting itintoadifferentform.Therefore, Where () methodfromExample 13-4isthesame như này: IEnumerablekết quả = customers.Where (khách hàng => customer.FirstName == "Donna") Chọn (khách hàng => khách hàng). Nếu một dự của kết quả là cần thiết, bạn sẽ cần phải sử dụng các phương thức Select. Ví dụ, nếu bạn muốn lấy địa chỉ email của Donna thay vì toàn bộ đối tượng khách hàng, bạn có thể sử dụng câu lệnh sau: IEnumerablekết quả = customers.Where (khách hàng => customer.FirstName == "Donna") .Select (khách hàng => customer.EmailAddress);
Nhớ lại rằng khách hàng là các loại List, Mà có thể dẫn bạn nghĩ rằng Danh sáchphải thực hiện các trường hợp phương pháp để hỗ trợ LINQ. Nó không. Các trường hợp phương pháp được gọi là phương pháp mở rộng bởi vì nó kéo dài một loại hiện có. Trước khi chúng ta đi vào chi tiết hơn trong ví dụ này, chúng ta hãy xem xét kỹ hơn phương pháp khuyến nông.
De fi hoạch và Sử dụng phương pháp mở rộng C # 3.0 giới thiệu phương pháp mở rộng cung cấp khả năng cho các lập trình để thêm các phương pháp để loại hiện có. Ví dụ, System.String không cung cấp một hàm Right () trả về n ký tự bên phải nhất của một chuỗi. Nếu bạn sử dụng chức năng này rất nhiều trong ứng dụng của bạn, bạn có thể xem xét việc xây dựng và thêm nó vào thư viện của bạn. Tuy nhiên, System.String được định nghĩa như niêm phong, vì vậy bạn không có thể phân nó. Nó không phải là một lớp một phần, vì vậy bạn không thể mở rộng nó sử dụng tính năng này. Tất nhiên, bạn không thể sửa đổi các thư viện .NET lõi trực tiếp hoặc. Vì vậy, bạn sẽ phải xác định phương pháp trợ giúp của chính bạn bên ngoài của System.String và gọi nó với cú pháp như sau:
MyHelperClass.GetRight (aString, n) Đây không phải là chính xác trực quan. Với C # 3.0, tuy nhiên, có một giải pháp thanh lịch hơn. Bạn thực sự có thể thêm một phương pháp để các lớp System.String; nói cách khác, bạn có thể mở rộng các lớp System.String mà không cần phải sửa đổi các lớp chính nó. Như một phương pháp được gọi là phương pháp khuyến nông. Ví dụ 13-6 cho thấy làm thế nào để xác định và sử dụng một phương pháp khuyến nông
Ví dụ 13-6. Định nghĩa và sử dụng các phương pháp khuyến nông
using System;
Programming_CSharp_Extensions namespace {// lớp container cho phương pháp mở rộng. ExtensionMethods public class tĩnh {// Trả về một chuỗi chứa bìa phải // n ký tự trong một chuỗi cụ thể. công chuỗi tĩnh Right (chuỗi này s, int n) {if (n <0 || n> s.Length) return s; khác trở s.Substring (s.Length - n); }}
Public class Tester {public static void Main () {string hello = "Hello"; Console.WriteLine ( "hello.Right (-1) = {0}", hello.Right (-1)); Console.WriteLine ( "hello.Right (0) = {0}", hello.Right (0)); Console.WriteLine ( "hello.Right (3) = {0}", hello.Right (3)); Console.WriteLine ( "hello.Right (5) = {0}", hello.Right (5)); Console.WriteLine ( "hello.Right (6) = {0}", hello.Right (6));
}}}
Output: hello.Right (-1) = Xin chào hello.Right (0) = hello.Right ( 3) = llo hello.Right (5) = Xin chào hello.Right (6) = Xin chào
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: