如何在两种方法之间共享一个LINQ查询?

时间:2012-05-28 15:35:11

标签: c# linq

有没有办法在两种方法之间共享一个LINQ查询?我有很长的LINQ查询从数据库获取搜索结果,我需要使用此查询来获取结果(某种列表<>) - 第一种方法 - 并获取其计数(int) - 第二种方法 - 。我不想在两个单独的方法中复制此查询,我不能返回包含搜索结果和记录计数的自定义类对象(由此查询返回)。所以我想要做的是获取LINQ查询定义(或类似的东西?)但没有我可以在其他方法中使用的结果集。也许有另一种好方法可以做到这一点。谢谢你的帮助;)

代码如下所示:

public ??? GetSearchResultsQuery(SearchRequest search_request)
{
    var queryGetSearchResults = ....
    return queryGetSearchResults;
} 

public int GetSearchResultsCount(SearchRequest search_request)
{
    return GetSearchResultsQuery(search_request).Count();
}

public List<SearchResults> GetSearchResults(SearchRequest search_request)
{
return GetSearchResultsQuery(search_request).Skip(search_request.startRowIndex).Take(search_request.maximumRows).ToList(); 
}

1 个答案:

答案 0 :(得分:3)

public IQueryable<SearchedForType> GetSearchResultsQuery(SearchRequest search_request)
{
    var queryGetSearchResults = context.SearchedForTypes.Where(x => x == search_request.X);
    ... build up your search query ...
    return queryGetSearchResults;
}