如何在每个循环中使用别名列值 [英] How to use alias column value in a for each loop
本文介绍了如何在每个循环中使用别名列值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任何人都可以帮我提一个如何获取别名列值的建议我试图使用数据表在vb.net中使用每个循环。
我的代码实际显示如下
Hi can any one help me to give me a suggestion how to get alias column value from i''m trying to use a for each loop in vb.net using a datatable.
My code is actually shown below
If CInt(RowItem.Item("TOTALLINENO")) 500 Then
For c As Integer = 0 To tblRawTesterShutdown.Columns.Count - 1
If CInt(tblRawTesterShutdown.Rows(c)(10)("Percentage")); Max Then
Max = CInt(tblRawTesterShutdown.Rows(c)(10)("Percentage"))
End If
Next
Max = Max - Convert.ToInt32(tblRawTesterShutdown.Rows(tblRawTesterShutdown.Rows.Count - 1))
Else
Return False
End If 'End here
我在vs 2005中这样做了。百分比是一个sql server查询。查询如下所示
I have do it in vs 2005. The percentage is a sql server query. the query is shown below
SELECT t1.LINE_NO, t1.E_FIELD, t1.F_FIELD, t1.G_FIELD, t1.FAMILY, t1.HSA_STATUS,t1.CACHE_FAMILY,
SUM(t1.TOTAL) AS CountOfLineNo, t2.TotalOfLineNo,
convert(decimal(18,3),(convert(decimal(8,1),SUM(t1.TOTAL)) * 100 / t2.TotalOfLineNo )/100)AS Percentage
FROM(
SELECT LINE_NO, E_FIELD,F_FIELD,G_FIELD,HSA_STATUS,FAMILY,CACHE_FAMILY, Count(LINE_NO) as Total
FROM TX_HSA_SUMM WITH(NOLOCK)
WHERE MT_TIMESTAMP2 BETWEEN ('2013-04-03 14:28:00.000') AND ('2013-04-03 14:28:00.000')
AND E_FIELD!='00000' AND F_FIELD!='00000' AND G_FIELD!='00000' -- added new line
GROUP BY LINE_NO,E_FIELD,F_FIELD,G_FIELD,HSA_STATUS,FAMILY,CACHE_FAMILY
) AS t1
LEFT JOIN (
SELECT LINE_NO, COUNT(LINE_NO) AS TotalOfLineNo
FROM TX_HSA_SUMM WITH(NOLOCK)
WHERE MT_TIMESTAMP2 BETWEEN ('2013-04-03 14:28:00.000') AND ('2013-04-03 14:28:00.000')
GROUP BY LINE_NO
) AS t2
ON t1.LINE_NO = t2.LINE_NO
GROUP BY t1.LINE_NO, t1.E_FIELD, t1.F_FIELD, t1.G_FIELD, t1.HSA_STATUS, t1.FAMILY, t1.CACHE_FAMILY, t1.Total,t2.TotalOfLineNo
HAVING t2.TotalOfLineNo > '500' and t1.line_no='64072m' and hsa_status='r'
ORDER BY t1.E_FIELD, t1.F_FIELD, t1.G_FIELD, t2.TotalOfLineNo,t1.Total,t1.HSA_STATUS, t1.LINE_NO, t1.FAMILY, t1.CACHE_FAMILY
实际上,每个循环都应该在vb.net中使用sql server的粗体百分比值。我正在使用vs 2005 ans sql server 2000.在此先感谢
The bold Percentage value from sql server should be used in the vb.net for each loop actually. I''m using vs 2005 ans sql server 2000. Thanks in advance
推荐答案
如果我记得很清楚,你想要读取存储在DataTable对象中的值来对记录进行排序并执行其他操作,因为MS SQL Server功能少于MS SQL Server 2005并且不包含ROW_NUMBER等功能...
您想要通过收集记录(存储在单列中)以获得最大值,然后进行一些操作。
您需要将数据表对象转换为列表(T) [ ^ ],其中包含您正在寻找的功能。
If i good remember, you want to read values stored in a DataTable object to sort records and do some other operations, because MS SQL server functionality is less than MS SQL Server 2005 and does not contains functions like ROW_NUMBER...
You want to go through the collection of records (stored in single column) to get a maximum, then to do some operations.
You need to "convert" datatable object into List(of T)[^], which contains functionality you''re looking for.
Module Module1
Sub Main()
Dim dt As DataTable = Nothing, dr As DataRow = Nothing, dc As DataColumn = Nothing
Dim dl As List(Of Integer) = Nothing, i As Integer = 0
Try
dt = CreateDataTable()
dc = dt.Columns("MyInt")
dl = New List(Of Integer)
For Each dr In dt.Rows
dl.Add(dr.Item(dc))
Next
Console.WriteLine("=== Unsorted list ===")
For i = 0 To dl.Count - 1
Console.WriteLine("Item: {0}, value: {1}", i, dl.Item(i))
Next
Console.WriteLine("")
Console.WriteLine("Sorting...")
dl.Sort()
Console.WriteLine("")
Console.WriteLine("=== Sorted list ===")
For i = 0 To dl.Count - 1
Console.WriteLine("Item: {0}, value: {1}", i, dl.Item(i))
Next
Console.ReadKey()
Catch ex As Exception
End Try
End Sub
Function CreateDataTable() As Data.DataTable
Dim dt As Data.DataTable = Nothing
Dim dr As Data.DataRow = Nothing
Dim dc As Data.DataColumn = Nothing
Dim i As Integer = 0, rnd As Random = Nothing
Try
rnd = New Random
dt = New Data.DataTable("Test")
dc = New DataColumn("MyInt", GetType(Integer))
dt.Columns.Add(dc)
For i = 1 To 20
dr = dt.NewRow
dr.Item("MyInt") = rnd.Next(1, 1000)
dt.Rows.Add(dr)
Next
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
dc = Nothing
dr = Nothing
rnd = Nothing
End Try
Return dt
End Function
End Module
这篇关于如何在每个循环中使用别名列值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文