Linq查询不匹配的项目

时间:2013-02-17 12:48:04

标签: c# asp.net linq entity-framework

我有一个包含许多上传文件的应用程序。我正在尝试快速找到未与任何删除记录相关联的孤立文件以释放磁盘空间。

我已经创建了这个方法,但它在我的(可怜的)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);
    }
}

1 个答案:

答案 0 :(得分:3)

更改如下:

var orhpans = links.Where(f => files.Select(x => x.FileID).Contains(f.FileID));