Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字典与列表相交以返回另一个字典_C#_.net_Asp.net Core_Functional Programming - Fatal编程技术网

C# 将字典与列表相交以返回另一个字典

C# 将字典与列表相交以返回另一个字典,c#,.net,asp.net-core,functional-programming,C#,.net,Asp.net Core,Functional Programming,如何传入标题列表并返回键/值对 我创建了如下方法: public static IDictionary<string, string> GetHeaderValues( IReadOnlyList<string> keys, IHeaderDictionary headers) { } 这样做的目的是传入所有头,并仅检索所需的头 我们如何将这两个对象IReadOnlyList和IHeaderDictionary相交,并映射到一个常规的IDictionary 我试

如何传入标题列表并返回键/值对

我创建了如下方法:

public static IDictionary<string, string> GetHeaderValues(
    IReadOnlyList<string> keys, IHeaderDictionary headers)
{
}
这样做的目的是传入所有头,并仅检索所需的头

我们如何将这两个对象IReadOnlyList和IHeaderDictionary相交,并映射到一个常规的IDictionary

我试图用以下内容将两者交叉:

public static IDictionary<string, string> GetHeaderValues(
    IReadOnlyList<string> keys, IHeaderDictionary headers)
{
}

headers.Keys.Intersectkeys;但是,这将返回一个ienumerable字符串。

您可以将键与标题连接起来,然后在类似的字典中转换该结果,但是该值可能不是单个字符串。在这个解决方案中,我在StringValue对象上调用了ToString,这可能不是您想要的,但它是您的方法签名所显示的:

public static IDictionary<string, string> GetHeaderValues(
    IReadOnlyList<string> keys, IHeaderDictionary headers)
{
    return headers
    .Join(keys, h => h.Key, k => k, (h, k) => h)
    .ToDictionary(h => h.Key, h => h.Value.ToString());
}

您可以将键与头连接起来,然后在类似的字典中转换结果,但是值可能不是单个字符串。在这个解决方案中,我在StringValue对象上调用了ToString,这可能不是您想要的,但它是您的方法签名所显示的:

public static IDictionary<string, string> GetHeaderValues(
    IReadOnlyList<string> keys, IHeaderDictionary headers)
{
    return headers
    .Join(keys, h => h.Key, k => k, (h, k) => h)
    .ToDictionary(h => h.Key, h => h.Value.ToString());
}
一个简短的伪代码:

C执行:

public static IDictionary<string, string> GetHeaderValues(IReadOnlyList<string> keys, IHeaderDictionary headers)
{
    return keys.Intersect(headers.Keys)
        .Select(k => new KeyValuePair<string,string>(k,headers[k]))
        .ToDictionary(p => p.Key, p => p.Value);
}
测试用例:

var list = new List<string>{
    "Content-tyb3",  // non-exist
    "Cookie",        
    "Accept-Language",
    "Program",      // non-exist
};
var headers = GetHeaderValues(list,Request.Headers);
一个简短的伪代码:

C执行:

public static IDictionary<string, string> GetHeaderValues(IReadOnlyList<string> keys, IHeaderDictionary headers)
{
    return keys.Intersect(headers.Keys)
        .Select(k => new KeyValuePair<string,string>(k,headers[k]))
        .ToDictionary(p => p.Key, p => p.Value);
}
测试用例:

var list = new List<string>{
    "Content-tyb3",  // non-exist
    "Cookie",        
    "Accept-Language",
    "Program",      // non-exist
};
var headers = GetHeaderValues(list,Request.Headers);

它们是从请求中传入的:public static async Task Run[HttpTriggerAuthorizationLevel.Function,get,post,Route=null]HttpRequest req,ILogger logPlease.@HereticMonkey我已更新。让我知道我能提供什么额外的信息。@Hereticsmonkey注意下面Carlo的回答。它可能会在将来帮助您对不起,这个答案如何帮助我知道您以前尝试过什么?它们是从req:public static async Task Run[HttpTriggerAuthorizationLevel.Function,get,post,Route=null]HttpRequest req,iLogPlease的请求中传递的。@HereticMonkey我已更新。让我知道我能提供什么额外的信息。@Hereticsmonkey注意下面Carlo的回答。这可能对你将来有所帮助对不起,这个答案如何帮助我知道你以前尝试过什么?