早上好,LINQ和IEnumerable的<String>重新評估
我寫了下面的LINQ查詢
public static Func<String, IEnumerable<String>> ListaCorreccoes = (StrPalavra) =>
{
return (from StrTmp in ListaPossiveisCorreccoes(StrPalavra)
from StrTmp2 in ListaPossiveisCorreccoes(StrTmp)
where PalavraConhecida(StrTmp2)
select StrTmp2).Distinct();
};
其中,出乎我的意料,比使用兩個foreach
圈子中快得多。使用ListaTmp = ListaCorreccoes("comutador");
,其中ListaTmp
是IEnumerable<String>
類型的運行此功能後,我需要使用
Console.Write(">> Prima qualquer tecla para listar todas as " + ListaTmp.Count() + " correcções...");
打印ListaTmp
的基數和打印的ListaTmp
的內容,用
foreach (String StrTmp in ListaTmp)
Console.WriteLine(StrTmp);
然而,無論是最後和最後一行代碼導致ListaTmp,因此查詢爲重新評估,這是非常奇怪的,因爲變量被分配了查詢結果。爲什麼這個代碼有這麼奇怪的行爲?
非常感謝。