2010-10-13 45 views
1

我正在挖掘我的Microsoft Visual Studio文檔,我發現這篇文章在C#參考(ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_csref/html/ df01e266-5781-4aaa-80c4-67cf28ea093f.htm),約爲Interface Interface。下面是示例代碼:如何查詢DataSet並將結果設置爲某個控件的DataSource? (C#winforms)

class SelectSample1 
{ 
    static void Main() 
    {   
     //Create the data source 
     List<int> Scores = new List<int>() { 97, 92, 81, 60 }; 

     // Create the query. 
     IEnumerable<int> queryHighScores = 
      from score in Scores 
      where score > 80 
      select score; 

     // Execute the query. 
     foreach (int i in queryHighScores) 
     { 
      Console.Write(i + " "); 
     }    
    } 
} 
//Output: 97 92 81 

取而代之的List,是不是也可以查詢DataTable並設置查詢作爲DataGridView的DataSource的結果呢? 如果是的話,假設我有這樣的結構:

Fruit  | CategoryID 
--------------------------------------- 
Lemon  | 1 
Orange  | 1 
Apple  | 2 
Pear  | 2 

任何人都可以請給我一個例子(如果可能的話,對於一個初學者的方法.. :)。我想要的是在DataGridView中顯示結果。顯示其CategoryID等於1的所有水果。請幫助,

在此先感謝你們。

回答

0

您需要使用AsEnumerable()擴展Databe的選擇行和綁定的DataGridView這樣的:

DataTable table = new DataTable(); 
table.Columns.Add("Fruit"); 
table.Columns.Add("ID", typeof(int)); 
table.Rows.Add(new object[] { "Lemon", 1 }); 
table.Rows.Add(new object[] { "Orange", 1 }); 
table.Rows.Add(new object[] { "Apple", 2 }); 
table.Rows.Add(new object[] { "Pear", 2 }); 

BindingSource bs = new BindingSource(); 
bs.DataSource = from row in table.AsEnumerable() 
          where row.Field<int>("ID") == 1 
          select new {Fruit = row.Field<string>("Fruit"), ID = row.Field<int>("ID")}; 

dataGridView1.DataSource = bs; 
+0

謝謝你,先生:) – yonan2236 2010-10-13 23:57:40

0

試試這個

var results = from row in dataTable.AsEnumerable() 
where row.Field<int>("CategoryID") == 1 
select row ; 

,您可以在結果行很容易綁定到你的控制。

相關問題