using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// Tạo một List mới chứa các số nguyên
List<int> numbers = new List<int> { 1, 2, 3 };
// Thêm một số vào cuối danh sách
numbers.Add(4);
// Xóa một số khỏi danh sách
numbers.Remove(2);
// Duyệt qua danh sách và in ra các phần tử
foreach (int number in numbers)
{
Console.WriteLine(number);
}
// Tạo một IEnumerable mới từ List hiện tại
IEnumerable<int> enumerable = numbers;
// Duyệt qua IEnumerable và in ra các phần tử
foreach (int number in enumerable)
{
Console.WriteLine(number);
}
}
}
Trong ASP.NET Core, khi bạn sử dụng Razor View Engine để hiển thị dữ liệu, bạn có thể truyền dữ liệu từ Controller đến View bằng cách sử dụng các model. Khi sử dụng các model, có thể sử dụng @model để khai báo kiểu dữ liệu cho model trong Razor View.
Khi sử dụng @model IEnumerable, nó cho biết rằng View sẽ nhận được một danh sách các đối tượng mà nó có thể duyệt qua bằng foreach loop. IEnumerable là một interface trong C# và có thể được triển khai bởi nhiều kiểu dữ liệu, chẳng hạn như List, Array, HashSet, v.v.
Khi sử dụng @model List, nó cho biết rằng View sẽ nhận được một danh sách các đối tượng kiểu List, mà nó có thể được truy xuất bằng các phương thức của List như Add(), Remove(), IndexOf(), v.v. Chú ý rằng List là một kiểu dữ liệu cụ thể và không phải là một interface như IEnumerable.
Dưới đây là một ví dụ về cách sử dụng List và IEnumerable trong Razor:
// Trong Controller
public ActionResult Index()
{
// Tạo một List mới chứa các Customer
List<Customer> customers = new List<Customer>
{
new Customer { FirstName = "John", LastName = "Doe" },
new Customer { FirstName = "Jane", LastName = "Doe" }
};
// Truyền List đến View
return View(customers);
}
// Trong View (Index.cshtml)
@model IEnumerable<Customer>
@foreach (var customer in Model)
{
<p>@customer.FirstName @customer.LastName</p>
}
Trong ví dụ trên, chúng ta tạo một List mới chứa các Customer và truyền nó đến View. Trong View, chúng ta khai báo Model là một IEnumerable và duyệt qua nó để hiển thị thông tin của từng Customer.
Bạn vẫn có thể sử dụng @model List<Customer> trong View. Điều này cho phép bạn sử dụng các phương thức và thuộc tính của List trên Model. Tuy nhiên, nếu bạn chỉ cần duyệt qua danh sách và không cần thay đổi nó, việc sử dụng IEnumerable là một lựa chọn tốt hơn vì nó cho phép bạn truyền vào một loạt các kiểu dữ liệu khác nhau (chẳng hạn như một mảng hoặc một HashSet) mà không cần thay đổi code trong View.
Do đó, nếu Controller truyền vào View một danh sách các đối tượng có thể được duyệt qua, bạn có thể sử dụng @model IEnumerable. Nếu Controller truyền vào View một danh sách các đối tượng kiểu List, bạn có thể sử dụng @model List để truy cập các phương thức của List.