回避できると思われる長いイベントで複数回呼び出しているため、適応したい以下のコードがあります。
People= (from p in xDocument.Root.Descendants("People").Where(
se => Get<int>(se.Element("ID")) != i1)
select new Person
{
ID = Get<int>(se.Element("ID")),
Skills = GetPersonSkills(Get<int>(se.Element("ID")))
}).OrderBy(w => w.FirstName).ToList()
アプリケーションに Get(se.Element("ID")) メソッドを再実行させる代わりに、単にSkills = GetPersonSkills(ID)
. 次に、それ自体の ID 値を読み取るだけです。
PS: ここに書いたコードは、実際の長いコードではなく、目的を示すために簡略化したものです。私の Get(se.Element("ID")) の例はアプリケーションにとって時間がかからないことを認識していますが、改善が必要なコードの部分を強調するだけでした。