Cách nào là cách thanh lịch nhất để xử lý mục IEnumerable đầu tiên khác với các mục khác, mà không phải thử nghiệm trên mỗi lần lặp?Cách thanh lịch nhất để xử lý mục IEnumerable đầu tiên khác nhau
Với một thử nghiệm trên mỗi lần lặp, nó sẽ trông như thế này:
// "first item done" flag
bool firstDone = false;
// items is an IEnumerable<something>
foreach (var item in items)
{
if (!firstDone)
{
// do this only once
ProcessDifferently(item);
firstDone = true;
continue;
}
ProcessNormally(item);
}
Nếu tôi làm điều này:
ProcessDifferently(items.First());
ProcessNormally(items.Skip(1)); // this calls `items.GetEnumerator` again
nó sẽ gọi GetEnumerator
hai lần, mà tôi muốn tránh (ví Ví dụ, các trường hợp LINQ-to-Sql).
Bạn sẽ làm như thế nào nếu bạn cần thực hiện nhiều lần xung quanh mã của mình?
Cảm ơn, sạch sẽ và gọn gàng. Có chính xác những gì tôi hỏi. – dilbert