私たちのプロジェクトは現在、ページ内のコントロールを見つけるために 2 つの方法を使用しています。1 つ目は、 .FindControl を再帰的に使用することです。 もう 1 つは、次のように LINQ を使用することです。
(from n in Page.Controls.Cast<Control>().Descendants(c => c.Controls.Cast<Control>())
where (n as Label != null && n.ID == "TaskIDLabel")
select n).First() as Label;
この拡張機能を使用するもの:
static public IEnumerable<T> Descendants<T>(this IEnumerable<T> source,
Func<T, IEnumerable<T>> DescendBy)
{
foreach (T value in source)
{
yield return value;
foreach (T child in DescendBy(value).Descendants<T>(DescendBy))
{
yield return child;
}
}
}
これらの2つの方法のうち、どちらが優れていますか? どちらが速いですか?