2016-12-14 82 views
0

我有一個小問題需要在vb.net中解決,我必須計算number number of number 1 number 1762728381128911我做了這個解決方案,但我確信有更復雜的方法可以做這個 。Number of Number在數字列表中

Public Function CheckOccurance() As Integer 
    Dim numbersList As New List(Of String) 
    numbersList.Add("1") 
    numbersList.Add("7") 
    numbersList.Add("6") 
    numbersList.Add("2") 
    numbersList.Add("7") 
    numbersList.Add("2") 
    numbersList.Add("8") 
    numbersList.Add("3") 
    numbersList.Add("8") 
    numbersList.Add("1") 
    numbersList.Add("1") 
    numbersList.Add("2") 
    numbersList.Add("8") 
    numbersList.Add("9") 
    numbersList.Add("1") 
    numbersList.Add("1") 
    Dim count As Integer = 0 
    For Each value In numbersList 
     If value.Equals("1") Then count += 1 
    Next 
    Return count 

End Function 
+0

C#:'詮釋計數=「1762728381128911」.Count(c => c =='1');'只是初始字符串中的一個* Linq *。 –

+0

我需要這個在vb.net – Usman

+0

而不是以這種方式添加到你的列表,你可以使用'numbersList.AddRange({「1」,「7」等)}或'新列表(字符串)從{ 「1」,「7」等}或新列表(字符串)({「1」,「7」等)} –

回答

2

不指定你想這是什麼代碼的一部分,使「更復雜」,但你可以使用LINQ返回值

NB領取時必須asEnumerable()拿起擴展方法名稱時衝突。

return numbersList.asEnumerable.Count(Function(v) v ="1") 

記得導入LINQ的命名空間

imports System.Linq 

而且,梅德Bychenko建議(雖然在C#味),你可以這樣做......

return "1762728381128911".Count(function(v) v = "1") 
+1

查看更新。沒有理解它,沒有好的複製/粘貼。我建議你研究Linq。請參閱此處[LINQ .NET](https://msdn.microsoft.com/zh-cn/library/bb308959.aspx) –

+1

原樣,此代碼不起作用; 'v.Equals(「1」)'將調用'Char.Equals(Object)'重載,如果參數不是'Char'並且'String'不是'Char ';看到這[小提琴](https://dotnetfiddle.net/ojCJTy)。另外關於最後一部分,'String'是一個「集合」(它實現了'IEnumerable(Of Char)') – Sehnsucht

相關問題