2017-07-30 16 views
1

私はヘッダーのリストを交差しようとしています:Request.Headersを別のリストと交差させることは可能ですか?

ValidHeadersは次のように定義されている
var validHeaders = Request.Headers.ToArray().Intersect(ValidHeaders.List); 

:私は別のリストでHttpRequestHeadersリストを交差するにはどうすればよい

public static class ValidHeaders 
{ 
    public static readonly IList<string> List = new ReadOnlyCollection<string> 
    (new List<string> 
    { 
     "Content-Type", 
     "DataServiceVersion", 
     "MinDataServiceVersion", 
     "Accept", 
     "If-Match", 
     "If-None-Match", 
     "Prefer" 
    }); 
} 

答えて

2

すべてのヘッダとKey(ヘッダー名)ValidHeaders.List

var validHeaders = Request.Headers.Where(header => ValidHeaders.List.Any(k => string.Equals(k, header.Key, StringComparison.InvariantCultureIgnoreCase))); 

これに見出される静的ValidHeaderクラス

public static class ValidHeaders { 
    public static readonly IList<string> List = new ReadOnlyCollection<string>(new List<string> 
    { 
     "Content-Type", 
     "DataServiceVersion", 
     "MinDataServiceVersion", 
     "Accept", 
     "If-Match", 
     "If-None-Match", 
     "Prefer" 
    }); 

    public static IEnumerable<KeyValuePair<string, IEnumerable<string>>> GetValidHeaders(this HttpRequestMessage request) { 
     var validHeaders = request.Headers.Where(header => ValidHeaders.List.Any(k => string.Equals(k, header.Key, StringComparison.InvariantCultureIgnoreCase))); 
     return validHeaders; 
    } 
} 
に拡張メソッドとして追加することができるヘッダのそれらの値を返します

使用済み

var validHeaders = Request.GetValidHeaders(); 
+0

大文字と小文字を区別しない比較は必要ありませんか? –

+0

この場合、Listの値はHttpRequestHeaderで使用されるマッチケースの値と同じです。大文字小文字を無視するようにコードを修正するのは簡単です – Nkosi

+0

しかし、ヘッダーの場合はこれまでと異なるでしょうか? –

関連する問題