2016-12-14 55 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