我有一個應用程序有一些上傳的文件。我試圖快速找到未刪除的孤立文件以刪除任何記錄以釋放磁盤空間。Linq查詢不匹配的項目
我已經創建了這個方法,但它在我的(窮人)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);
}
}
究竟你的意思是用死在這裏?一個例外? – bas 2013-02-17 12:51:55
它不編譯:編譯器錯誤消息:CS1928:'System.Linq.IQueryable'不包含'包含'的定義和最佳擴展方法重載'System.Linq.ParallelEnumerable.Contains ( System.Linq.ParallelQuery ,TSource)'有一些無效參數 –
2013-02-17 12:53:55
SQL分析器顯示什麼。甚至更有趣的f =>文件的調試值.Contains(f.FileID))這是否生成一個表達式樹太大,EF無法發送到SQLServer? – 2013-02-17 13:00:32