だから私はたくさんのUltraTreeNodeを持っています。それらを繰り返し処理して、後でユーザーがノードをクリックしたときに実行されるTagプロパティにLINQクエリを割り当てようとしています。各ノードのクエリで変更されるのは、where句の変数だけです。ただし、ノードがクリックされ、クエリが最終的にタグから実行されると、foreachループの最後に割り当てられたクエリ(およびwhere変数)が常に使用されます。
すべてのタグが同じクエリを参照しているため、変数が何度も割り当てられている場所で同じように動作しますか?その場で述語を作成してそれらを渡す必要なしに、この動作を回避する方法はありますか?
更新-申し訳ありませんが、コードは次のとおりです。
var query = from result in results
where result.SchedulingStatus != SchedulerRunStatus.Scheduled
group result by result.UserId into users
select new {users.Key, Count = users.Count()};
foreach (var user in query)
{
UltraTreeNode efdUserNode = new UltraTreeNode();
efdUserNode.Text = user.Key + " (" + user.Count + ")";
efdUserNode.Key = user.Key;
IEnumerable<DownloadResultSummary> nodeQuery = from result in efdDetail.DownloadResultSummaries
where
result.SchedulingStatus != SchedulerRunStatus.Scheduled &
result.UserId == user.Key
select result;
efdUserNode.Tag = nodeQuery;
efdUserNode.Override.NodeAppearance.Image = Properties.Resources.user;
this.efdNode.Nodes.Add(efdUserNode);
}