【问题标题】:How to share one LINQ query between two methods?如何在两种方法之间共享一个 LINQ 查询?
【发布时间】:2012-06-02 23:11:39
【问题描述】:

有没有办法在两种方法之间共享一个 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(); 
}

【问题讨论】:

  • 你想在这里返回 IQueryable
  • 请注意,大多数情况下,当您将鼠标悬停在 Visual Studio 上时,Visual Studio 会在 var 类型上提供 IntelliSense。

标签: c# linq


【解决方案1】:
public IQueryable<SearchedForType> GetSearchResultsQuery(SearchRequest search_request)
{
    var queryGetSearchResults = context.SearchedForTypes.Where(x => x == search_request.X);
    ... build up your search query ...
    return queryGetSearchResults;
} 

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多