Bài đăng nổi bật

 


Danh sách trong C #

Trong C#, danh sách là một cấu trúc dữ liệu chung có thể chứa bất kỳ kiểu nào. Sử dụng newtoán tử và khai báo kiểu phần tử trong dấu ngoặc nhọn < >.

Trong mã ví dụ, nameslà một danh sách chứa stringcác giá trị. someObjectslà một danh sách chứa các thể hiện Object.


List<string> namesnew List<string>();
List<Object> someObjectsnew List<Object>();

Khởi tạo đối tượng

Giá trị có thể được cung cấp cho một Listkhi nó được xây dựng trong một quá trình gọi là khởi tạo đối tượng .

Thay vì dấu ngoặc đơn, hãy sử dụng dấu ngoặc nhọn sau kiểu của danh sách.

Lưu ý rằng điều này CHỈ có thể được sử dụng tại thời điểm xây dựng.


List<string> citiesnew List<string> { "Los Angeles", "New York City", "Dubai" };

Bộ sưu tập chung

Một số bộ sưu tập, như danh sách và từ điển, có thể được liên kết với nhiều loại khác nhau. Thay vì xác định một lớp duy nhất cho mỗi kiểu có thể, chúng ta định nghĩa chúng bằng một kiểu chung T, ví dụ List<T>.

Các tập hợp này được gọi là các loại tập hợp chung . Chúng có sẵn trong System.Collections.Generickhông gian tên.

Loại chung Tthường sẽ hiển thị trong tài liệu. Khi sử dụng tập hợp chung trong mã của bạn, kiểu thực tế được chỉ định khi tập hợp được khai báo hoặc khởi tạo.


using System.Collections.Generic;

List<string> namesnew List<string>();
List<Object> objsnew List<Object>();
Dictionary<string,int> scoresnew Dictionary<string, int>();

Danh sách vô hạn

Không giống như mảng C#, danh sách C# không có số phần tử giới hạn. Bạn có thể thêm bao nhiêu mục tùy thích.


// Initialize array with length 2
string[] citiesArraynew string[2];
citiesArray[0] = "Los Angeles";
citiesArray[1] = "New York City";
citiesArray[2] = "Dubai"; // Error!

// Initialize list; no length needed
List<string> citiesListnew List<string>();
citiesList.Add("Los Angeles");
citiesList.Add("New York City");
citiesList.Add("Dubai");

Thuộc tính Count

Số phần tử trong danh sách được lưu trữ trong thuộc tính Count.

Trong mã ví dụ, các Count citiesList thay đổi khi chúng tôi thêm và xóa các giá trị.


List<string> citiesListnew List<string>();
citiesList.Add("Los Angeles");
Console.WriteLine(citiesList.Count);
// Output: 1

citiesList.Add("New York City");
Console.WriteLine(citiesList.Count);
// Output: 2

citiesList.Remove("Los Angeles");
Console.WriteLine(citiesList.Count);
// Output: 1

Remove()

Các phần tử của danh sách có thể được loại bỏ bằng phương thức Remove() này. Phương thức trả về truenếu mục được xóa thành công; nếu không false,.

Trong mã ví dụ, cố gắng xóa "Cairo"trả về falsevì phần tử đó không có trong citiesList.


List<string> citiesListnew List<string>();
citiesList.Add("Los Angeles");
citiesList.Add("New York City");
citiesList.Add("Dubai");

result1citiesList.Remove("New York City");
// result1 is true

result2citiesList.Remove("Cairo");
// result2 is false

Clear()

Tất cả các phần tử của danh sách có thể được loại bỏ bằng phương thức Clear() này. Nó không trả lại gì.

Trong mã ví dụ, danh sách được khởi tạo với ba mục. Sau khi gọi Clear(), không có mục nào trong danh sách.


List<string> citiesListnew List<string> { "Delhi", "Los Angeles", "Kiev" };
citiesList.Clear();

Console.WriteLine(citiesList.Count);
// Output: 0

Contains()

Trong C#, phương thức list Contains()trả về truenếu đối số của nó tồn tại trong danh sách; nếu không false,.

Trong mã ví dụ, lệnh gọi đầu tiên Contains()trả về truevì "Thành phố New York" có trong danh sách. Cuộc gọi thứ hai trở lại falsevì “Cairo” không có trong danh sách.


List<string> citiesListnew List<string> { "Los Angeles", "New York City", "Dubai" };

result1citiesList.Contains("New York City");
// result1 is true

result2citiesList.Contains("Cairo");
// result2 is false

Dãy danh sách

Không giống như các phần tử trong mảng C#, nhiều phần tử của danh sách C# có thể được truy cập, thêm hoặc xóa đồng thời. Một nhóm gồm nhiều phần tử tuần tự trong danh sách được gọi là một dải ô.

Một số phương pháp liên quan đến phạm vi phổ biến là:

  • AddRange()
  • InsertRange()
  • RemoveRange()

string[] africannew string[] { "Cairo", "Johannesburg" };
string[] asiannew string[] { "Delhi", "Seoul" };
List<string> citiesListnew List<string>();

// Add two cities to the list
citiesList.AddRange(african);
// List: "Cairo", "Johannesburg"

// Add two cities to the front of the list
citiesList.InsertRange(0, asian);
// List: "Delhi", "Seoul", "Cairo", "Johannesburg"

// Remove the second and third cities from the list
citiesList.RemoveRange(1, 2);
// List: "Delhi", "Johannesburg"

LINQ

LINQ là một tập hợp các tính năng khung và ngôn ngữ để viết các truy vấn trên các loại tập hợp. Nó rất hữu ích để chọn, truy cập và chuyển đổi dữ liệu trong một tập dữ liệu.

Sử dụng LINQ

Các tính năng LINQ có thể được sử dụng trong chương trình C# bằng cách using namespace System.Linq.


using System.Linq;

var

Vì loại kết quả của truy vấn LINQ được thực thi không phải lúc nào cũng được biết đến, nên thông thường người ta lưu trữ kết quả trong một biến được định kiểu ngầm bằng cách sử dụng từ khóa var.


var custQueryfrom cust in customers
                where cust.City == "Phoenix"
                select newcust.Name, cust.Phone };

Cú pháp phương thức & truy vấn

Trong C#, các truy vấn LINQ có thể được viết bằng cú pháp phương thức hoặc cú pháp truy vấn .

Cú pháp phương thức giống với hầu hết các lệnh gọi phương thức C# khác, trong khi cú pháp truy vấn giống với SQL.


// Method syntax
var custQuery2customers.Where(cust => cust.City == "London");

// Query syntax
var custQuery =  
    from cust in customers  
    where cust.City == "London"  
    select cust;

Where

Trong các truy vấn LINQ, toán tử Where được sử dụng để chọn các phần tử nhất định từ một chuỗi.

  • Nó mong đợi một biểu thức đánh giá thành một giá trị boolean.
  • Mọi phần tử thỏa mãn điều kiện sẽ được đưa vào truy vấn kết quả.
  • Nó có thể được sử dụng trong cả cú pháp phương thức và cú pháp truy vấn.

List<Customer> customersnew List<Customer>
{
  new Customer("Bartleby", "London"),
  new Customer("Benjamin", "Philadelphia"),
  new Customer("Michelle", "Busan" )
};

// Query syntax
var custQuery =  
    from cust in customers  
    where cust.City == "London"  
    select cust;

// Method syntax
var custQuery2customers.Where(cust => cust.City == "London");

// Result: Customer("Bartleby", "London")

From

Trong các truy vấn LINQ, toán tử from khai báo một biến phạm vi được sử dụng để duyệt qua chuỗi. Nó chỉ được sử dụng trong cú pháp truy vấn.

Trong mã ví dụ, nđại diện cho mỗi phần tử trong namesTruy vấn trả về chỉ chứa những phần tử n.Contains("a")đúng.


string[] names = { "Hansel", "Gretel", "Helga", "Gus" };

var query =
  from n in names
  where n.Contains("a")
  select n;

// Result: Hansel, Helga

Select

Trong các truy vấn LINQ, toán tử Select xác định những gì được trả về cho mỗi phần tử trong truy vấn kết quả. Nó có thể được sử dụng trong cả phương thức và cú pháp truy vấn.


string[] trees = { "Elm", "Banyon", "Rubber" };

// Query syntax
var treeQuery =
  from t in trees
  select t.ToUpper();

// Method syntax
var treeQuery2names.Select(t => t.ToUpper());

// Result: ELM, BANYON, RUBBER

LINQ & foreach

Bạn có thể sử dụng một vòng lặp foreach để lặp lại kết quả của một truy vấn LINQ đã thực thi.

Trong mã ví dụ, querylà kết quả của một truy vấn LINQ và nó có thể được lặp lại khi sử dụng foreachnameđại diện cho mỗi phần tử trong names.


string[] names = { "Hansel", "Gretel", "Helga", "Gus" };

var querynames.Where(n => n.Contains("a"));
  
foreach (var name in query)
{
  Console.WriteLine(name);
}

Count()

Kết quả của một truy vấn LINQ được thực thi có một phương thức Count(), phương thức này trả về số phần tử mà nó chứa.

Trong mã ví dụ, Count()trả về 2vì kết quả querychứa 2 phần tử chứa “a”.


string[] names = { "Hansel", "Gretel", "Helga", "Gus" };

var querynames.Where(x => x.Contains("a"));

Console.WriteLine(query.Count());
// Output: 2


Post a Comment

Mới hơn Cũ hơn