Có phải List.collect tương đương với Danh sách LINQ.SelectMany không?Là F # List.collect giống như trong C# List.SelectMany?
[1;2;3;4] |> List.collect (fun x -> [x * x]) // [1;4;9;16]
trong LINQ
new List<int>() { 1, 2, 3, 4 }
.SelectMany(x => new List<int>() { x * x }); // 1;4;9;16
được sửa đổi:
dụ Thích hợp hơn
let list1 = [1;2;3;4]
let list2 = [2;4;6]
// [2; 4; 6; 4; 8; 12; 6; 12; 18; 8; 16; 24]
list1 |> List.collect (fun a -> list2 |> List.map (fun b -> a * b))
...
var list1 = new List<int>() { 1, 2, 3, 4 };
var list2 = new List<int>() { 2, 4, 6 }
// 2,4,6,4,8,12,6,12,18,8,16,24
list1.SelectMany(a => list2.Select(b => a * b));
với mô tả tại https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/list.collect%5B't%2C'u%5D-function-%5Bfsharp% 5D, nó chắc chắn trông giống như vậy với tôi. –
(Mặc dù ví dụ của bạn không hoạt động, trong đó bạn dường như đã chuyển từ tăng gấp đôi thành bình phương một nửa ...) –
@Jon Skeet Tôi đã thay đổi nó – kogoia