DataGridView不能被LINQ to SQL对象填充

本文关键字:SQL 对象 填充 to LINQ 不能 DataGridView | 更新日期: 2023-09-27 18:16:28

我试图使用下面的代码在我的WinForms应用程序(dgvOrderSizes)上填充DataGridView。如代码中所述,如果我将cod分配给我的DataGridView,它会填充得很好,但是当我尝试将orderDetails分配给它时,它不会填充。我试着调试代码,发现DataSource属性被正确分配,所以我想知道为什么网格没有被填充?(没有异常)

    protected void ShowOrderDetails(int orderNo)
    {
        this.dgvOrderSizes.DataSource = null;
        var cod = from orderDetail in db.OrderDetails
                                 where orderDetail.OrderNo == orderNo
                                 select orderDetail;
        //this.dgvOrderSizes.DataSource = cod;        //works until here

        var orderDetails = from pOrder in cod.AsEnumerable()
                                 select new { pOrder.Plies, pOrder.Composition, pOrder.Size, pOrder.UnitName, pOrder.Quantity, pOrder.Rate, pOrder.ProductionUnitName, pOrder.DeliveryUnitName };
        this.dgvOrderSizes.DataSource = orderDetails;       //doesn't work
    }

DataGridView不能被LINQ to SQL对象填充

DataGridView使用了相当多的api,包括IListSource, IList, ITypedList, IBindingList, IBindingListView,以及大部分的componentmodel(包括所有的描述符),还有更多。如果你说它与"cod"一起工作,那么可能LINQ-to-SQL至少提供了这些api中的一个,而LINQ-to-Objects没有(这很好;

只要调用ToList()就可以了:

blah.DataSource = orderDetails.ToList();