2017-12-14 7 views
1

この長いif文を書く方が良いですか?変更されるのはd=...のみです。長いif文をより多くのconsiceに書き直す

<% 
if (
Request.Url.ToString().Contains("d=36423") 
|| Request.Url.ToString().Contains("d=39252") 
|| Request.Url.ToString().Contains("d=39280") 
|| Request.Url.ToString().Contains("d=39251") 
|| Request.Url.ToString().Contains("d=39246") 
|| Request.Url.ToString().Contains("d=39245") 
|| Request.Url.ToString().Contains("d=39244") 
|| Request.Url.ToString().Contains("d=39243") 
|| Request.Url.ToString().Contains("d=39242") 
|| Request.Url.ToString().Contains("d=39241") 
|| Request.Url.ToString().Contains("d=39240") 
|| Request.Url.ToString().Contains("d=26009") 
|| Request.Url.ToString().Contains("d=39239") 
|| Request.Url.ToString().Contains("d=39238") 
|| Request.Url.ToString().Contains("d=39237") 
|| Request.Url.ToString().Contains("d=38816") 
) 
{%> 

<div class="page-desktop-nav"> 

    <%} else {%> 
    <div class="mobile-nav"> 
<%}%> 

答えて

1

あなたはそれが配列またはコレクションに含まれていますかどうかを確認し、その後、dパラメータの値を見つけるためにRequest.QueryString["d"]を使用する必要があります。

0

あなたは1つのアレイ内のすべての小数点以下の値を格納することができ、ループのために、あなたはそれがあなたの複数の時間は同じコード行

感謝の書き込みが削除されますD =のARR [i]は

を書くことができます。

+0

私はこの 'VARのARR =新しい文字列[] { "36423"、 "39252"、 "39280"、 "39251"、 "39246"、 「39245のようにそれを行うことができます" "39244"、 "39243"、 "39242"、 "39241"、 "39240"、 "26009"、 "39239"、 "39238"、 "39237"、 " 38816 " }; ' – Wolverine

2

あなたは配列に値を格納し、次のようなもの使用することができます

static public class ExtensionMethods 
{ 
    static public bool ContainsAny(this string input, IEnumerable<string> searchFor) 
    { 
     return searchFor.Any(s => input.Contains(s)); 
    } 
    static public bool ContainsAny(this string input, params string[] searchFor) 
    { 
     return searchFor.Any(s => input.Contains(s)); 
    } 
} 
をそして、このように使用します:

<% 
var arr = new string[] 
    { 
    "36423", 
    "39252", 
    "39280", 
    "39251", 
    "39246", 
    "39245", 
    "39244", 
    "39243", 
    "39242", 
    "39241", 
    "39240", 
    "26009", 
    "39239", 
    "39238", 
    "39237", 
    "38816" 
    }; 

    string url = Request.Url.ToString(); 
    if (arr.Any(s => url.Contains(string.Format("d={0}", s)))) { 
%> 
+3

HashSetは、配列。 O(n) – kmc059000

+0

の代わりにO(1)になります。コンパイラエラーメッセージ:CS1061: 'System.Array'に 'Any'と拡張メソッドの定義が含まれていません ' – Wolverine

+0

'Any()'は 'System.Linq'名前空間の拡張メソッドであり、これはあなたが使用しているこれを機能させるために追加する必要があります。 – Herm

0

たぶんあなたのライブラリにこれらの拡張メソッドを追加

if (request.Url.ToString().ContainsAny("d=36423","d=39252","d=39280,"etc.")) 
    { 
    } 

または

var lookup = new[] {"d=36423","d=39252","d=39280","etc"}; 
    if (request.Url.ToString().ContainsAny(lookup)) 
    { 
    } 
関連する問題