2013-04-13 42 views
0
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnFinalProject"].ToString()); 
SqlCommand cmd = new SqlCommand(@"SELECT c.partID, p.name, p.categoryID, p.price, p.image, p.subCategoryID, 
             (CASE WHEN categoryID = 1 THEN 'Y' ELSE 'N' END) AS casesYN, 
             (CASE WHEN categoryID = 3 THEN 'Y' ELSE 'N' END) AS OSYN, 
             (CASE WHEN categoryID = 7 THEN 'Y' ELSE 'N' END) AS HDDYN, 
             (CASE WHEN subCategoryID = 1 THEN 'Y' ELSE 'N' END) AS powerYN, 
             (CASE WHEN subCategoryID = 2 THEN 'Y' ELSE 'N' END) AS processorYN, 
             (CASE WHEN subCategoryID = 3 THEN 'Y' ELSE 'N' END) AS moboYN, 
             (CASE WHEN subCategoryID = 4 THEN 'Y' ELSE 'N' END) AS memoryYN, 
             (CASE WHEN subCategoryID = 5 THEN 'Y' ELSE 'N' END) AS graphicsYN, 
             (CASE WHEN subCategoryID = 6 THEN 'Y' ELSE 'N' END) AS opticalYN, 
             (CASE WHEN subCategoryID = 7 THEN 'Y' ELSE 'N' END) AS soundYN 
             FROM configuration c JOIN parts p ON p.partID = c.partID 
             WHERE c.customID = @ID", conn); 
     conn.Open(); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     while (dr.Read()) 
     { 
     string[] cases = { dr["partID"].ToString() }; 
     } 

如何插入到cases数组中只有'caseYN'值设置为Y的partID,因为它现在会在sql查询中插入每个'partID'。从数据库填充数组C#

回答

5

我认为你不想改变你的SQL查询。

使用List<string>而不是string[],因为它会更容易添加新项目到它:循环结束后

var cases = new List<string>(); 
while (dr.Read()) 
{ 
    if(dr["casesYN"].ToString() == "Y") 
     cases.Add(dr["partID"].ToString()); 
} 

如果你真的需要一个数组,可以随时拨打ToArray()方法:

string[] casesArray = cases.ToArray(); 

但它需要using System.Linq位于文件顶部。