2017-04-17 74 views
0

我已經看到這裏似乎有類似的問題,但它們看起來都非常有關聯性,至今我在解決這個問題時遇到了一些麻煩。對於C#和剃鬚刀模板仍然很新,所以如果這是一個重複的問題或可笑的簡單道歉!將字符串轉換爲int,根據foreach循環檢查int的總和

我想要做的是將一個用戶定義的字符串的值在foreach循環中,將其轉換爲(我假設)一個int,爲每個循環實例添加它,然後檢查財產總和。

這裏是一個簡單化的代碼示例,可能會使它變得清晰:

foreach (var col in columnOptions.Columns) 
{ 
    <div class="@col.Width"> 
     @*content*@ 
    </div> 
} 
if (totalWidthValue > 12) 
{ 
    @*do something else*@ 
} 

所以基本上我需要col.Width的值,將其轉換爲int,因此它可以被計算,加起來總每次出現時,再檢查總是否大於12。

此外,如果有幫助,這就是/寬度是如何得到設置:

[JsonSchema(Title = "Column width", Description = "Select the width of this column based on a 12 column wide grid")] 
[PropertyOrder(11)] 
[JsonOptions(GridColumns = 6)] 
[JsonEnumValues("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12")] 
[DefaultValue("12")] 
[Localizable(false)] 
public string Width { get; set; } 

EDIT : 下面是我可以提供的關於我的嘗試,我擔心它可能沒有完全形成足以查明任何具體的「這裏是你出錯的地方」,但至少它顯示了一個嘗試,並可能給出了我的地方知識方面的差距是(增加的部分真的只是兩個變量):

foreach (var col in columnOptions.Columns) 
    { 

     var colNum = double.TryParse(col.Width, out colNum); 
     var totalWidthValue = colNum + colNum; 

     <div class="@col.Width"> 
      @*content*@ 
     </div> 
    } 
    if (totalWidthValue > 12) 
    { 
     @*do something else*@ 
    } 
+0

你有試過什麼嗎? –

+0

沒有錯誤。說實話,我很不確定如何從一開始就接近它,我覺得包括我自己失敗的嘗試只會淹沒水域太多。簡單地說,應該怎麼做,我覺得我的嘗試大多與這個問題無關。 – tganyan

+0

仍然最好顯示你曾經嘗試過,因爲否則這看起來就像一個「爲我做我的工作」問題 –

回答

1

爲了您的嘗試:問題是,使用TryParse它返回一個bool並具有out參數。然後累積使用+=。因此,而不是這樣的:

var colNum = double.TryParse(col.Width, out colNum); 
var totalWidthValue = colNum + colNum; 

有這樣的事情:

double colNum; 
if(double.TryParse(col.Width, out colNum)) 
    totalWidthValue += colNum; 

使用LINQ的.Sum這樣做:

int desiredWidth = 12; 
if(columnOptions.Columns.Sum(col => int.Parse(col.Width)) > desiredWidth) 
{ 
    /* ... */ 
} 

如果你不能確定寬度一個有效的int,你可以做類似於this answer中的第二個代碼snipet:

Func<string, int, int> parseIntOrDefault = (input, defaultValue) => 
{ 
    int value = defaultValue; 
    int.TryParse(input, out value); 
    return value; 
}; 

columnOptions.Columns.Sum(col => parseIntOrDefault(col.Width,0))) 
+0

這看起來非常有用,會給它一個鏡頭。感謝您的答案,也感謝提示如何讓我的問題更好! – tganyan

+0

@tganyan - 請參閱您的方法出錯的更新。對不起,你剛剛發佈你試過的東西,但它是什麼幫助SO的一部分,是一個很好的地方尋找答案,但也是一個學習工具 –

+1

當然,我不認爲它個人,但只是一個機會,繼續學習什麼樣的信息對這類帖子很重要。 – tganyan