2016-11-22 4 views
0

私のプログラムで問題が発生したため、すべてのデータをグリッドと正しい列/行に取り込むことができました。しかし、私のLINQ Queryは間違っていると思います.3番目の列を適切に分割して正しいデータを挿入していません。私の結果:https://gyazo.com/0f307a10dff4c015a361708ecd53c0e9、正しい結果:https://gyazo.com/99e9915bf4ee4e4aa3fb7f2144da1f94。 0から正しいパーセンテージに変更するには、コード内で何が変更できますか?すべての応答を感謝!また、テキストからの例では、この「アメリカン・エキスプレス、AXP、NYSE、消費者金融、90.73,93.04,5.56,1.01」あなたのコードを見てみると構造体とLINQを使用してtxtファイルを注文するDataGridView

Public Class frmDow 

Structure stock 
    Dim company As String 
    Dim symbol As String 
    Dim exchange As String 
    Dim industry As String 
    Dim price2013 As Double 
    Dim price2014 As Double 
    Dim earningsPerShare As Double 
    Dim dividend As Double 
End Structure 

Private Sub btnDetermine_Click(sender As Object, e As EventArgs) Handles btnDetermine.Click 

    Dim inputData() As String = IO.File.ReadAllLines("DOW2014.txt") 
    Dim stockData(29) As stock 
    Dim line, data() As String 
    Dim yield As Double 

    For i As Integer = 0 To (inputData.Length - 1) 
     line = inputData(i) 
     data = line.Split(","c) 
     stockData(i).company = data(0) 
     stockData(i).symbol = data(1) 
     stockData(i).price2014 = data(5) 
     stockData(i).dividend = data(7) 
    Next 

    Dim stockQuery = From stock In stockData 
        Where yield = data(5)/data(7) 
        Order By yield Descending 
        Select stock 

    For Each stockName In stockQuery 
     dgvResults.DataSource = stockData 
    Next 

    For Each s As stock In stockData 
     dgvResults.Rows.Add(s.company, s.symbol, yield) 
    Next 

End Sub 

End Class 
+0

最初にまず、構造を使用していますか?その 'ストック '型(いずれの方法でも「ストック」と名づけられる)はクラスでなければなりません。私は値の型を使用することの意味を正しく理解していない人がいくつかの問題を引き起こす可能性があるため、それを変更して問題が解消するかどうかを確認することをお勧めします。 – jmcilhinney

答えて

0

は、問題が離れて行くのではありませんからされて引っ張っているファイルその変化と一緒に。問題は実際にはyieldの値を決して決して設定しないので、0以外の値にすることはできません。あなたがする必要があるのは、LINQクエリの各項目の降伏値を選択することです。

Dim stockQuery = From stock In stockData 
       Where yield = data(5)/data(7) 
       Order By yield Descending 
       Select New With {.Company = stock.company, 
            .Symbol = stock.Symbol, 
            .Yield = stock.price2014/stock.dividend} 

dgvResults.DataSource = stockQuery.ToList() 

DataSourceは一度だけ設定され、手動で行を追加しないことに注意してください。

関連する問題