この 1 ステートメントのクエリは、「ファイルが特定のファイル構造を含む ZIP リポジトリである裸のファイル名のリストを教えてください」ときちんと述べています。
しかし、私は .Where() 拡張メソッド (流暢な構文) と選択クエリの両方を使用しています。".Where(file ==> <statement>)" を "where <statement>" に変更すると、匿名メソッド コードが bool を返さないというエラーが発生し、"select <clause>" を変更すると、 ".Select(<句>)" に対して、エラーは "選択句が使用されていません" です。
クエリまたは流暢な構文のいずれかで満足していますが、どちらか一方に落ち着きたいと考えています。なぜこれが機能しないのか、一貫した構文に落ち着くために何をする必要があるのか を誰かが説明できますか?
return (from file in Directory.EnumerateFiles(
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Globals.CompanyName, ProjectName, FolderName),
imageExtension,
SearchOption.TopDirectoryOnly)
.Where(file =>
{
try
{
string relativePath = ClassFru.Station + "/"; // Inside ZIPs, paths use a single forward slash
var zip = new ZipFile();
zip.ZipError += (s, o) => { throw new Exception(); };
using (zip = ZipFile.Read(file))
{
/// <todo>if (zip.Comment != Globals.CompanyName) { return false; }</todo>
foreach (var fru in this.gFrus)
{
var fruPath = relativePath + fru.Id + '.';
if (!(from e in zip where !e.IsDirectory && e.FileName.StartsWith(fruPath) select true).Any()) { return false; }
}
return true;
}
}
catch (Exception)
{
return false;
}
})
select Path.GetFileNameWithoutExtension(file)).ToArray();