2012-06-17 89 views

回答

0

您不需要LINQ查詢。只需將列表設置爲DataSource即可。在這種情況下,不需要設置DataMember。

private void Form4_Load(object sender, EventArgs e) 
    { 
     List<Products> productList = new List<Products>() 
     { 
      new Products{ProductName = "P1", ProductPrice = 56, Category = "c1"}, 
      new Products{ProductName = "P2", ProductPrice = 36, Category = "c1"}  
     }; 

     //var p = from s in productList select s; 

     dataGridView1.DataSource = productList; 
     //dataGridView1.DataMember = p.ToString(); 
    } 

EDIT

LINQ查詢返回IEnumerable;但是DataGridView類支持標準的Windows窗體數據綁定模型。這意味着數據源可以是任何實現以下接口之一的類型:IList,IListSource,IBindingList和IBindingListView。所以你需要調用ToList()來獲得你的LINQ結果。瞭解更多關於此此MSDN Link

不過你的情況做這同設置productList作爲數據源(我指的是結果是一樣的,因爲沒有排序或參與分組在LINQ查詢)。

如果你想使用LINQ玩,嘗試了這一點(您的列表將在ProductPrice升序排列)

var p = from s in productList orderby s.ProductPrice select s; 
    dataGridView1.DataSource = p.ToList(); 
+0

我知道,但實際上我正在這樣做來練習LINQ,我想看看像分組,orderby&where這樣的不同查詢的結果。所以我需要使用linq。謝謝。 –

+0

@BadhonJain看到我編輯的帖子 –

+0

現在它的工作很好..感謝很多。 –

0

而不是設置DataMember只需調用綁定方法dataGridView1.DataBind()。正如MSDN陳述的DataMember用於執行以下操作:

獲取或設置用於其在DataGridView是顯示數據的數據源的列表或表格的名稱。

+0

我沒有找到DataBind方法,我工作的WinForms,我認爲這種方法可用於Web應用程序。我還添加了對system.web程序集的引用,但仍未獲取該方法。還有什麼你可以建議的?謝謝 –