2013-08-20 21 views
1

我有大小像3,6,9,12,15-返回数据的数组。(3乘法)我们怎样才能从数组文本筛选

DataTable dt = new DataTable(); 
string GridData = ViewState["ShowItem"].ToString(); 
string[] FilterData = GridData.Split('^'); 

以上阵列返回的数据像..

FilterData [0] = "Pizza";  (Item) 
FilterData [1] = "2$";  (Price) 
FilterData [2] = "2";   (Quantity) 
FilterData [3] = "Burger"; 
FilterData [4] = "5$"; 
FilterData [5] = "1"; 
FilterData [6] = "Cesa"; 
FilterData [7] = "7$"; 
FilterData [8] = "3"; 

now I want to enter above data as column wise in database like: 
Item  Price Quantity Total(Price*Quantity) 

现在我想运行一个循环,增加特定领域的数据,如:

for (int nIndex = 0; nIndex < FilterData.Length; nIndex++) 
{ 
DataRow drow = dt.NewRow(); 
drow["ProductItem"] = FilterData[nIndex].ToString(); (Add all Item) 
drow["Cost"] = FilterData[nIndex].ToString();   (Add all Cost) 
drow["Quantity"] = FilterData[nIndex].ToString();  (Add all Quantity) 
double Total= Convert.ToDouble(FilterData[nIndex].ToString()) * Convert.ToInt32(FilterData[nIndex].ToString());  (Add all cost*Quantity) 
       drow["Total"] = Total; 
dt.Rows.Add(drow); 

}

所以任何人可以帮助我,我怎么能运行循环,因此数据添加到特定的列,如: 项目价格数量合计(价格*数量)

Pizza 2  2    4 
Burger 5  1    5 
Cesa  7  3    21 

回答

3

您需要增加nIndex 3每次通过它从nIndex偏移访问的每个成员:

for (int nIndex = 0; nIndex < FilterData.Length; nIndex += 3) 
{ 
    DataRow drow = dt.NewRow(); 
    drow["ProductItem"] = FilterData[nIndex];    // Item 
    var cost = FilterData[nIndex + 1];      // Cost 
    var qty = FilterData[nIndex + 2];      // Quantity 
    drow["Cost"] = cost; 
    drow["Quantity"] = qty; 
    double Total = 
     Convert.ToDouble(cost.Remove(cost.Length - 1)) * // remove $ 
     Convert.ToInt32(qty);        // Total 
    drow["Total"] = Total; 
    dt.Rows.Add(drow); 
} 
+1

精彩亲爱的!它工作正常。非常感谢短逻辑&它减少了我的行代码数量。谢谢:) – Steve

+0

智能答案p.s.w.g! – Steve

+0

@Steve很高兴帮助。快乐编码:) –