Lưu ý những gì người khác đã nói về việc không thực sự có thể "thêm" vào số đếm được, bạn vẫn có thể mô phỏng việc thêm. Trong thực tế, tôi cho rằng bạn có thể "thêm" một mục vào một chuỗi bằng cách biến đổi chuỗi thành chuỗi mới thực tế "chứa" mục (chỉ lặp lại chuỗi mới nếu bạn không tin tôi!) .
Bạn cũng có thể thể hiện một mặt hàng duy nhất là một cái gì đó đếm được như thế này:
//ToEnumerable might not be the best name here
public static IEnumerable<T> ToEnumerable<T>(this T item)
{
return Enumerable.Repeat(item,1);
}
hoặc
public static IEnumerable<T> ToEnumerable<T>(this T item)
{
yield return item;
}
Sau đó, bạn có thể "thêm" một mục để một đếm được như thế này:
var items = GetSomeItems();
var itemsWithNewItemOnEnd = items.Concat(somenewitem.ToEnumerable());
var itemsWithNewItemAtStart = somenewitem.ToEnumerable().Concat(items);
Bạn thậm chí có thể chèn mục vào một số vị trí khác theo thứ tự như thế này (giả sử bạn biết vị trí mà sau đó bạn muốn chèn nó):
var itemsWithNewItemInserted = items.Take(5).Concat(somenewitem.ToEnumerable()).Concat(items.Skip(5));
Sau khi bạn hoàn tất thao tác của mình (tức là bạn đã thao tác chuỗi của bạn để nó "chứa" những gì bạn muốn chứa), có thể bạn sẽ muốn làm cho một mảng hoặc danh sách ra khỏi chuỗi qua các phương pháp ToArray hoặc ToList:
var itemsWithNewItemInserted = items.Take(5).Concat(somenewitem.ToEnumerable()).Concat(items.Skip(5)).ToList();
Bây giờ itemsWithNewItemInserted là một danh sách chứa tất cả các mục mong muốn từ danh sách gốc, với các mục mới được chèn vào ở giữa.
Đánh lừa xung quanh với các chuỗi quá nhiều như thế này (lấy, bỏ qua, chèn, v.v.) có thể khiến bạn mất thời gian vì mỗi phương pháp mở rộng thêm (Take, Skip, v.v.) có thể khiến chuỗi được lặp lại nhiều lần, nhưng cú pháp hiểu danh sách làm cho nó dễ dàng hơn để thể hiện các hoạt động có vẻ khá phức tạp hơn bằng cách sử dụng lặp lại thông thường.
Ngoài ra, đây là một số liên kết thảo luận bày tỏ mục duy nhất là IEnumerable:
Passing a single item as IEnumerable<T>
Is there a neater linq way to 'Union' a single item?
thể trùng lặp của [? Làm thế nào tôi có thể thêm một mục vào một bộ sưu tập IEnumerable] (http : //stackoverflow.com/questions/1210295/how-can-i-add-an-item-to-a-ienumerablet-collection) –
nawfal