讓我們說我有這樣的聲明解釋:查詢C#字典使用lambda表達式
private static Dictionary<int, List<Models.APIAccessControl>> _APIRights = GetAPIRights();
其中關鍵代表角色ID,該值表示類:
public class APIAccessControl
{
public APIControllerRoute ControllerRoute { get; set; }
public APIActionRoute ActionRoute { get; set; }
public bool IsAuthorized { get; set; }
}
我試圖檢查如果用戶有權訪問此api。 我的想法是查詢字典並獲取角色的所有APIAccessControl列表,然後查詢他嘗試導航的APIActionRoute的那些APIAccessControl列表:
我得到字典值包含那些我想要角色的列表,但怎麼投值的清單列表,使此查詢:
public static bool CanAccess(int[] roleIDs, APIActionRoute apiActionRoute)
{
bool canAccess = false;
var apiAccessList = _APIRights.Where(x => roleIDs.Contains(x.Key)).Select(x => new { x.Value}).ToList();
//Querying to get all List<Models.APIAccessControl> that has any matchig APIActionRoute
}
您可以嘗試使用Dictionary的Values屬性提取列表。 –
你能否提供示例代碼來進行投射和查詢,我正在試圖以優雅,乾淨的方式編寫代碼。所以,如果您有任何想法,請分享您的代碼。謝謝 – Coding
您必須使用apiAccessList上的循環來獲取所有ActionRoutes並將它們添加到列表中。還有其他選擇。你唯一能做的就是使用Linq。讓我知道,如果澄清任何事情 –