我有以下表格:插入項目到DataGrid中
我使用實體框架數據庫第一,因此會生成以下實體類:
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;
但它tu RNS出這樣的:
我的問題是,我應該怎麼調整上面的查詢,使我得到了下面的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到對象的類型。
private List<object> saleItems = new List<object>();
這是最好的方法嗎?
還有一件事(除了我的回答和下面的評論):EF已經自動創建了一個名爲'Sal1'的類,它將數據庫表中的所有表列作爲類屬性。因此,在LINQ查詢中執行類似'select sa'的操作將返回'Sal1'對象的集合,因爲從db.Sal中的sa查詢的第一部分已經告訴LINQ關於'sa'的__type__。但是,當您執行JOIN時,您(通常)選擇屬於不同表的列,因此生成的__rows__不是特定類型。因此LINQ即時創建一個新類型。 – dotNET 2013-04-04 11:09:46