2011-04-06 134 views
0

我有一個LINQ2SQL查詢:存儲LINQ查詢對象的整數

//Pulling the Product_ID from the PlanMaster Table from WebEnroll DB! 
       var tr = from s in dt.PlanMasters 
         where s.PlanName == productName 
         select new 
         { 
          s.Product_ID 
         }; 

這是拉動PRODUCT_ID這是工作好。現在我想添加一條記錄到另一個LINQ聲明,是在這裏:

   CommissionsV2DataContext cv = new CommissionsV2DataContext(); 
       Entity_Product_Point ev = new Entity_Product_Point(); 
       ev.Entity_ID = getEntity; 
       ev.Product_ID = tr.; ????? 

我要存儲這些我從TR得到(即PRODUCT_ID),以ev.Product_ID變量。

我應該如何將對象轉換爲INT?謝謝!

回答

5

的問題是,你的第一個查詢返回對象的集合與整數屬性,而不是一個整數。或者,更乾淨

var tr = (
    from s in dt.PlanMasters 
    where s.PlanName == productName 
    select s.Product_ID).First(); 

,IMO:您可以將您的查詢更改爲這個代替

var tr = dt.PlanMasters.First(s => s.PlanName == productName).Product_ID; 
+0

我相信第二個仍然需要調用'選擇' – 2011-04-06 18:44:00

+0

不。 'First'可以接受一個委託,以便返回評估爲'true'的第一條記錄。 – Jacob 2011-04-06 18:46:07

3

tr是一個集合。您必須致電tr.FirstOrDefault().Product_ID

1

我會改變你的linq查詢,只選擇s.Product_ID而不是select new一個新的包含ID的匿名對象。然後

var tr = from s in dt.PlanMasters 
      where s.PlanName == productName 
      select s.Product_ID; 

你的第二個代碼塊可能是簡單地ev.Product_ID = tr.First();

CommissionsV2DataContext cv = new CommissionsV2DataContext(); 
    Entity_Product_Point ev = new Entity_Product_Point(); 
    ev.Entity_ID = getEntity; 
    ev.Product_ID = tr.First(); 
+0

這是行不通的 - tr是'IQueryable'而不是數字 - 你必須使用'tr.Single()',假設只有一個 - 否則查詢就有缺陷。 – BrokenGlass 2011-04-06 18:44:08

+0

或'tr.First()'...使用。 – 2011-04-06 18:44:54

+0

猜猜我沒有刷新頁面 - 這是不是在第一個版本 – BrokenGlass 2011-04-06 18:45:53

0

ev.Product_ID = tr.First()PRODUCT_ID。