1

アップロードされたファイルが多数あるアプリケーションがあります。ディスク領域を解放するために、削除するレコードに関連付けられていない孤立したファイルをすばやく見つけようとしています。

このメソッドを作成しましたが、(貧弱な) linq で窒息しています。

誰かが私が間違ったことを見ることができますか??

public static IQueryable GetOrphanedFiles(int skip = 0, int take = 100)
{
    using (var ctx = new CS3Entities())
    {
        var files = (from f in ctx.Files
                     select new
                                {
                                    FileID = f.ID
                                });


        var links = (from l in ctx.FileLinks
                     group l by l.FileID
                     into g
                     select new
                                {
                                    FileID = g.Key
                                });

        var orhpans = links.Where(f => files.Contains(f.FileID)); <-- dies here

        return orhpans.Skip(skip).Take(take);
    }
}
4

1 に答える 1

3

次のように変更します。

var orhpans = links.Where(f => files.Select(x => x.FileID).Contains(f.FileID));
于 2013-02-17T12:55:09.060 に答える