2012-06-17 45 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程序集的引用,但仍未获取该方法。还有什么你可以建议的?谢谢 –