将项插入DataGrid

时间:2013-04-04 07:40:35

标签: c# wpf wpfdatagrid

我有以下表格:

enter image description here

我正在使用Entity Framework Database First,因此会生成以下实体类:

public partial class Sal1 {
    public string SaleID { get; set; }
    public string ItemID { get; set; }
    public int Quantity { get; set; }
    public decimal Total { get; set; }

    public virtual Item Item { get; set; }
    public virtual Sale Sale { get; set; }
}

然后将Sal1行放入数据网格中,如下所示:

private List<Sal1> saleItems = new List<Sal1>();
...
var query = from sa in db.Sal1
            where sa.SaleID.Equals(tempSale)
            select sa;
foreach(Sal1 si in query) {
    saleItems.Add(si);                    
}
...
dgDetails.ItemsSource = saleItems;

但结果是这样的: enter image description here

我的问题是,我应该如何调整上面的查询,以便获得以下SQL的等效内容:

select T0.SaleID, T0.ItemID, T1.Name, T0.Quantity, T0.Total 
from Sal1 T0 inner join Item T1 on T0.ItemID = T1.ItemID;

提前致谢。


编辑:我似乎找到了解决方案,但我必须这样做:

var query = from sa in db.Sal1
        where sa.SaleID.Equals(tempSale)
        select new  { sa.SaleID, sa.ItemID, sa.Item.Name, 
            sa.Item.Manufacturer, sa.Quantity, sa.Total };

我必须将saleItems的类型更改为object。

private List<object> saleItems = new List<object>();

这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

就像SQL一样,LINQ也支持JOIN。您可以阅读有关其语法here的更多信息。您应该相应地更改您的查询以获得结果。我正在引导您进行更详细的解释,而不是给出准确的答案,因为它包含的宝贵信息将在未来帮助您。