Khi nhìn vào câu trả lời của Marc (và cuối cùng là phương pháp Zip
tính đến .Net 4), có một số lượng đáng kể chi phí để liệt kê và nối các hàng mà cuối cùng chúng bị bỏ đi; có thể được thực hiện mà không có chất thải đó?
Khi xem câu trả lời của Jon, tạo một phép chiếu các thực thể động để tham chiếu dữ liệu hiện có và sau đó tạo nhóm thực thể mới từ gương đó có thể ngăn cản việc sử dụng phương pháp đó nếu tổng số hàng quá lớn.
Đoạn mã dưới đây sử dụng các tham chiếu đến dữ liệu gốc và chỉ lãng phí các phụ đề được tạo là những chuỗi có chuỗi rỗng sau đó bị xóa. Ngoài ra việc đếm số liệu được giữ ở mức tối thiểu.
String[] title = { "One","Two","three","Four"};
String[] user = { "rob","","john",""};
user.Select ((usr, index) => string.IsNullOrEmpty(usr)
? string.Empty
: string.Format("{0}:{1}", title[index], usr))
.Where (cmb => string.IsNullOrEmpty(cmb) == false)
Ngoài ra, phương pháp này có thể có mảng người dùng có kích thước nhỏ hơn mảng tiêu đề làm dấu cộng.
Chức năng Aggregate
bị bỏ qua, ở đây nó là trong hành động:
int index = 0;
user.Aggregate (new List<string>(),
(result, usr) =>
{
if (string.IsNullOrEmpty(usr) == false)
result.Add(string.Format("{0}:{1}", title[index], usr));
++index;
return result;
})
'Zip' bây giờ là một phương pháp tiêu chuẩn như của .NET 4.0. http://msdn.microsoft.com/en-us/library/dd267698.aspx – Mashmagar