2016-12-14 5 views
0

私は数字の1の出現の数を数えなければならないvb.netで解決する小さな問題があります1762728381128911私はこの解決策を行いましたが、私は確かにもっと洗練された方法があると確信していますこの 。あなたは「より洗練された」したいと思い、このコードのどの部分を指定していませんが、NBの時に名前拡張メソッドをピックアップして、コレクションasEnumerable()をしなければならない番号のリストの出現数

値を返すためのLINQを使用することができます

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#、また

imports System.Linq 

LINQの名前空間をインポートすることを忘れないでください: 'int型の数= "1762728381128911" .Count(c => c == '1'); '最初の文字列のちょうど* Linq *。 –

+0

私はvb.netでこれが必要です – Usman

+0

あなたのリストにそのように追加するのではなく、 'numbersList.AddRange({" 1 "、" 7 "など)'または 'New List Of Of String { "1"、 "7"など) 'または'新しいリスト(Of String)({"1"、 "7"など} ' –

答えて

2

衝突。

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

ドミトリーBychenkoは(C#の風味が)提案されているように、あなたがこれを行うことが...

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

更新を参照してください。これを理解することなくコピー/ペーストするのは良いことではありません。私はLinqを研究することをお勧めします。参照してください[LINQ .NET](https://msdn.microsoft.com/en-us/library/bb308959.aspx) –

+1

そのまま、このコードは機能しません。 'v.Equals(" 1 ")'は 'Char.Equals(Object)'オーバーロードを呼び出します。これは、引数が 'Char'でなく、' String'が 'Char ';この[フィドル](https://dotnetfiddle.net/ojCJTy)を参照してください。また、最後の部分については、 'String'は"コレクション "です(' IEnumerable(Of Char) 'を実装しています) – Sehnsucht