如何组合多个linq查询的结果然后排序?

时间:2016-10-22 10:18:58

标签: c# linq

我有一个方法,它接收搜索键和页码并返回一页数据。 (GetDataPage使用SkipTake方法来获取正确的页面。)

public JsonResult SearchResults(string searchKey, int page) {
   var data = dbContext.MyTable.Where(x => x.Title.Contains(searchKey)).OrderByDescending(x => x.CreatedDate);
   return GetDataPage(data, page);
}

这是按预期工作的。 现在我需要更改函数,以便它获取searchKeys列表,搜索MyTable以获取所有搜索键,订购结果并返回所需页面。如何组合来自多个LINQ查询的搜索结果?

2 个答案:

答案 0 :(得分:1)

使用Any方法尝试此单个LINQ查询:

public JsonResult SearchResults(IEnumerable<string> searchKeys, int page)
{
    var data = dbContext.MyTable.Where(x => searchKeys.Any(serachKey => x.Title.Contains(searchKey))).OrderByDescending(x => x.CreatedDate):
    return GetDataPage(data, page);
}

答案 1 :(得分:0)

如果由于某种原因你确实需要多个查询,你可以这样做:

searchKeys.SelectMany(key => dbContext.MyTable.Where(x => x.Title.Contains(searchKey)))
          .OrderByDescending(x => x.CreatedDate)