将两个IEnumerable查询合并为一个

Sky*_*ell 4 .net c#

我需要帮助尝试组合两个IEnumerable查询.两个查询分别工作正常,但我需要找到一种方法来组合它们.

一个查询返回包含当前用户可以看到的所有实体书籍的结果.

第二个查询返回当前用户可以看到的所有数字图书.

真的,我只需要一个返回当前用户可以看到的物理和数字书籍的查询.

问题是我需要使用不同的方法来检查每种书籍类型的用户权限,我无法更改该部分.

谢谢!

var user = AllUsers.Current;

var BookFetchResults = rows.Select(r => new SearchResult(r))
    .Where(t => t.BookType == "Physical")
    .Select(r => r)
    .Where(e => e.CanViewPhysical(e.PhysicalBookResult, user) );
return Ok(results);

var BookFetchResults = rows.Select(r => new SearchResult(r))
    .Where(t => t.BookType == "Digital")
    .Select(r => r)
    .Where(e => e.CanViewDigital(e.DigitalBookResult, user) );
return Ok(results);
Run Code Online (Sandbox Code Playgroud)

shf*_*301 6

您可以在查询Where语句中执行所有操作:

var BookFetchResults = rows.Select(r => new SearchResult(r))
     .Where(t => (t.BookType == "Physical" && t.CanViewPhysical(e.PhysicalBookResult, user)) || 
                 (t.BookType == "Digital" && t.CanViewDigital(t.DigitalBookResult, user));
Run Code Online (Sandbox Code Playgroud)

你确实意识到线条.Select(r => r)什么都不做?所有这些行都返回与输入相同的值.如果你正在改变类型,你只需要做一个选择,就像你做的那样.Select(r => new SearchResult(r)).