2016-04-29 57 views
0

我試圖使用SQL查詢到C#列表獲取計數(1)值的列表在C#

我的示例代碼如下

"Select count(1) as Values, SM.Name from SM INNER JOIN Bill on SM.ID = Bill.AL INNER JOIN Details on Bill.ID = Details.ID" 
得到一個表中的列數

我需要將計數添加到列表中<>有人能告訴我該怎麼做嗎?

由於該計數值沒有我給它取名爲「值」 我試圖獲得價值爲下面的代碼

public IHttpActionResult Post(Brands brand) 
     { 
      DataTable dt = new DataTable(); 
      List<Brands> list = new List<Brands>(); 
      try 
      { 
       SqlConnection con = 
        new SqlConnection(
         "MyConnectionString"); 
       con.Open(); 
        var query = "Select count(1) as Values, SM.Name from SM INNER JOIN Bill on SM.ID = Bill.AL INNER JOIN Details on Bill.ID = Details.ID"; 

       SqlCommand com = new SqlCommand(query, con); 

       com.ExecuteNonQuery(); 
       con.Close(); 
       SqlDataAdapter adptr = new SqlDataAdapter(com); 
       adptr.Fill(dt); 
       for (int i = 0; i < dt.Rows.Count; i++) 
       { 

        Brands GetAll = new Brands(); 
        GetAll.Count = Convert.ToInt32(dt.Rows[i]["Values"]); 
        GetAll.Name = dt.Rows[i]["Name"].ToString(); 

        list.Add(GetAll); 
       } 
      } 
      catch (Exception e) 
      { 

      } 
      return Ok(list); 
     } 
    } 
} 
+0

這裏'1'是什麼,是列名 –

+0

COUNT以列名作爲參數。不清楚Count(1) –

+0

@ un-lucky count(1)的含義是否等於count(*) – Kason

回答

0

感謝每一個爲促進幫我列名出。特別感謝@Kason。我所做的是將Group by添加到SQL查詢。解決了這個問題。希望這會對其他人有所幫助。

-1

我對所有幫助者給予了評價和建議,但有些 評論顯示他們對sql的瞭解不多。

1)

您使用的列(1),請永遠使用這個語法 查詢,這是不好的做法來獲取數據,總是使用列的名稱。

2)

有人張貼數(1)是等於計數()比它的 神話,因爲計數()將提供所有的行,其中 計數(1)將只提供的數非空的計數。 (不是 相信在你的系統試試這個。)

請記住這一點也 建議他人,希望你喜歡這個職位。

+0

count(*)和count(1)也包含null。 – Kason

+0

它可能是您的主要關鍵字段,爲什麼。 –

+0

http://stackoverflow.com/questions/5179969/what-is-better-in-mysql-count-or-count1如果你的sql知識不夠,請做更多的研究。 – Kason