4
來枚舉兩個IEnumerables的所有排列我可以使用循環來做到這一點,但是有沒有辦法使用兩個IEnumerables,枚舉所有可能的排列並選擇一個包含排列的對象?我覺得這個「應該」是可能的,但我不確定要使用什麼操作符。是否有可能使用linq
感謝 詹姆斯
來枚舉兩個IEnumerables的所有排列我可以使用循環來做到這一點,但是有沒有辦法使用兩個IEnumerables,枚舉所有可能的排列並選擇一個包含排列的對象?我覺得這個「應該」是可能的,但我不確定要使用什麼操作符。是否有可能使用linq
感謝 詹姆斯
你說什麼基本上是一個笛卡爾加入?你可以做類似
var query = from item1 in enumerable1
from item2 in enumerable2
select new { Item1 = item1, Item2 = item2 }
Anthony's answer是正確的。擴展方法相當於是:
var query = enumerable1.SelectMany(
x => enumerable2,
(item1, item2) => new { Item1 = item1, Item2 = item2 }
);
或
var query = enumerable1.SelectMany(
item1 => enumerable2.Select(item2 =>
new { Item1 = item1, Item2 = item2 });
);
這可能是去獲得所有排列方式 - 只要記住它是O(N * M)。然而,如果你只需要一個單一的排列(比如隨機排列),你最好使用每個列表上的'ElementAt()'和一個隨機索引來產生排列。 – LBushkin 2010-04-13 13:12:00