作者 主題: LINQ to SQL 查詢完資料庫後想將其中1欄的資料取出作運算  (閱讀 9144 次)

0 會員 與 1 訪客 正在閱讀本文。

RC

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
各位前輩好:

        我是用LINQ to SQL 查詢完1筆資料但是我想取其中1各欄位出來使用運算子做運算,請問該如何寫接下來的部份。然後我使用DataGridView看下位置。假如我想取欄位3裡面的 "1" 資料做運算改怎麼寫?

欄位1     欄位2       欄位3         欄位4          欄位5
 
12        100            1               2                 6

程式碼:

 Dim dc As New bridgedateDataContext
        Dim result = From p In dc.DER橋樑整體檢測資料 Where p.橋樑名稱 = ComboBox1.Text And p.檢測日期 = DateTimePicker1.Value Select p
        DataGridView1.DataSource = result

我有想過用把 Select p 改成 Select p.欄位3 這樣可以把 "1" 抓出來,如果要欄位1就再查詢1次。
   Dim result1 = From p In dc.DER橋樑整體檢測資料 Where p.橋樑名稱 = ComboBox1.Text And p.檢測日期 =     
   DateTimePicker1.Value Select p.欄位1
當我想要使用運算子做運算的時候就出錯了,不知道是否我運算寫錯。
我是這樣寫   lable.text =  result + result1  想放到lable看是否有計算錯誤

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
不懂你的意思, 如果是要在 result 抓 欄位1  跟 欄位3 的話,query 用 Select p 就好,然後取  result.欄位1 跟 result.欄位3 不就得了?

RC

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
洋蔥叔叔您好:

這部分我後來有寫下列的程式碼把資料抓取出來了。
但是當我想要將欄位2的資料與欄位3的資料做運算時,在Lable1顯示的應該是101,但是不知道為什麼它顯示出來的是1001,請問是那裡出問題了?

Dim result = From p In dc.DER橋樑整體檢測資料 Where p.橋樑名稱 = ComboBox1.Text And p.檢測日期 = DateTimePicker1.Value Select p

Lable1.Text = result.First.欄位2 + result.First.欄位3

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
因為除非你有定義 mapping 要不然它不會自動幫你轉型,要手動轉?

代碼: [選擇]
Lable1.Text = cint(result.First.欄位2) + cint(result.First.欄位3)

RC

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
洋蔥叔叔您好:
     謝謝你可以了

RC

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
洋蔥叔叔您好:
我碰到各問題,之前都只是取欄位1的第一各值,如果我想要取欄位1的第一各值以後的數值 55或2該怎麼辦?
           欄位1     欄位2       欄位3         欄位4          欄位5
 
           12        100            1               2                6
         
           55          48            48             54               8

           2             4             9               5              4

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
...
一個 row 一個 row 抓
要不然先去上資料庫ABC

RC

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
那我想請問我程式碼這樣寫可以把它改成陣列嗎?

Dim result1 = From p In dc.DER橋樑整體檢測資料 Where p.橋樑名稱 = ComboBox1.Text And p.檢測日期 = DateTimePicker1.Value Select p

For Each m In result1
            Dim s() As Integer = {m}
        Next

我是想說把result1裡面的元素放到陣列這樣子在 利用陣列把每各元素取出來
想取出欄位1第3筆資料 打S(2,0)

因為我程式撰寫中需要將資料庫的資料拿出來做計算每一筆資料欄位1~5都需要做計算
我原本是想說利用迴圈運算但是計算結果都不對才會想採取一筆資料單獨抓出來,我原本迴圈寫是這樣
result1 是欄位1的3筆資料
result2 是欄位2的3筆資料
result3 是欄位3的3筆資料
For Each pp In result1
            For Each ps In result2
                For Each pss In result3
                    sum = 100 - 100 * (pp + ps) * pss ^ 2 / ((4 + 4) * 4 ^ 2)
                Next
            Next
        Next
我想要的是
100-100*(12+100)*1^2/ ((4 + 4) * 4 ^ 2)

100-100*(55+48)*48^2/((4 + 4) * 4 ^ 2)

100-100*(2+4)*9^2/((4 + 4) * 4 ^ 2)
然後三各相加得到最後答案