在Linq表达式中调用多个函数

时间:2015-04-10 18:04:05

标签: c# linq

我有以下Linq表达式,它可以自行运行:

var query = from c in db.crawljobs
            where c.fk_members_id == uid
            select c;

现在我想在此表达式中添加其他两个函数的结果。

public int GetNumCrawlResults(int jobId)
{
    return SomeInt();
}

public int GetNumPagesCrawled(int jobId)
{
    return SomeInt();
}

所以我尝试过这样的事情:

var query = from c in db.crawljobs                     
            from cr in GetNumCrawlResults(c.id)
            from cp in GetNumPagesCrawled(c.id)
            where c.fk_members_id == uid 
            select c;

我收到错误:

  

LINQ to Entities无法识别方法' Int32   GetNumCrawlResults(的Int32)'方法,这个方法不能   翻译成商店表达。

1 个答案:

答案 0 :(得分:1)

您可以这样做,但在调用自己的函数之前必须使用.ToList()。您调用的函数必须在SQL中有效才能使Linq to Entities正常工作。但是,如果你先.ToList(),Linq to Objects会处理这个问题。