>>422-424
System.Linq.Enumerable.WhereSelectEnumerableIterator.MoveNext()内で
「アクセス拒否UnauthorizedAccessException」のエラーが起きていました。
ので、foreachじゃなくてfileinfoの取得プロセスにあったみたいです。すいません。

質問が変わってしまうのですが、
DirectoryInfo di = new DirectoryInfo(@"C:\");
var files = from file in di.EnumerateFiles("*", SearchOption.AllDirectories) select file;
で、エラーがあったらスキップして次のファイルを取得するようなlinqってどうかけばいいんでしょうか?
検討がつきません。。