Câu hỏi rất ngắn gọn. Tôi có một mảng chuỗi được sắp xếp ngẫu nhiên (các mục 100K +), nơi tôi muốn tìm sự xuất hiện đầu tiên của một chuỗi mong muốn. Tôi có hai giải pháp.Đối với Linq - Hiệu suất so với Tương lai
Từ khi đọc những gì tôi có thể đoán là 'for loop' sẽ cho hiệu suất tốt hơn một chút (nhưng lề này luôn có thể thay đổi), nhưng tôi cũng thấy phiên bản LINQ dễ đọc hơn nhiều. Trên số dư mà phương pháp thường được coi là thực hành mã hóa tốt nhất hiện tại và tại sao?
string matchString = "dsf897sdf78";
int matchIndex = -1;
for(int i=0; i<array.length; i++)
{
if(array[i]==matchString)
{
matchIndex = i;
break;
}
}
hoặc
int matchIndex = array.Select((r, i) => new { value = r, index = i })
.Where(t => t.value == matchString)
.Select(s => s.index).First();
Related: [for vs. foreach vs. LINQ] (http://programmers.stackexchange.com/questions/178218/for-vs-foreach-vs-linq) – sloth
Tôi thậm chí sẽ không sử dụng LINQ trong này trường hợp, vì bạn thực sự phải chiến đấu để tìm chỉ mục - tôi muốn sử dụng 'Array.IndexOf' :) – Rawling
Tôi sử dụng LINQ trên datatables lớn (100k + hồ sơ, ~ 40 cột) mà không có bất kỳ vấn đề hiệu suất. – Teejay