Tôi hiện đang thử nghiệm một chút với LINQ. Hãy nói rằng tôi có hai bộ sưu tập có độ dài giống hệt nhau:Hợp nhất xen kẽ với LINQ?
var first = new string[] { "1", "2", "3" };
var second = new string[] { "a", "b", "c" };
Tôi muốn sáp nhập hai bộ sưu tập thành một, nhưng trong một thời trang xen kẽ. do đó chuỗi kết quả nên là:
"1", "a", "2", "b", "3", "c"
Những gì tôi đã đi lên với cho đến nay là sự kết hợp của Zip
, một loại vô danh và SelectMany
:
var result = first.Zip(second, (f, s) => new { F = f, S = s })
.SelectMany(fs => new string[] { fs.F, fs.S });
Có ai biết yêu cầu thay/đơn giản hơn cách để đạt được như một interleaved hợp nhất với LINQ?
Chắc chắn là giải pháp tốt liên quan đến cả khả năng sử dụng lại và khả năng đọc. – TeaWolf
Tôi nghĩ nếu bộ sưu tập đầu tiên lớn hơn, mã này sẽ vẫn trả lại tất cả, tuy nhiên nếu bộ sưu tập thứ hai lớn hơn, nó sẽ bỏ qua chúng. Có lẽ giá trị tiếp tục thông qua bộ sưu tập thứ hai sau khi vòng lặp trong khi nhất quán :-) –
@Danny, vâng. Sở thích của tôi sẽ dừng lại một khi chạy nhanh nhất, sau đó bạn không cần phải lo lắng về cách điền vào các khoảng trống.(Thông thường tôi sẽ không đưa mã của người khác vào câu trả lời của tôi, nhưng tôi sẽ để lại bản chỉnh sửa của ChaosPandion với mã của Jiri trong nó một mình.) – Douglas