2014-12-08 67 views
1

我有以下方法:如何在LINQ選擇調用方法

internal void DuplicateGroup(int oldGroupId, int newGroupId) { 
    IEnumerable<int> res = (from p in Db.table 
          where p.GroupID == oldGroupId 
          select p.packSizeID); 
    foreach (int ps in res) 
     Db.table.Add(new entityclass { GroupID = newGroupId, packSizeID = ps }); 
} 

的方法建立與期望ID的列表,然後添加了新rescords與newGroupIDs同桌。問題是:是否可以在select中調用方法?

+5

如果這是Linq to Entities(我認爲它是),那麼沒有。在SQL選擇查詢中,您無法從代碼中調用方法。 – 2014-12-08 08:41:10

+0

是的,它是Linq的實體。 – Franziee 2014-12-08 08:42:15

+1

@Franziee @Andei寫道,你不能在'Select'中調用方法。 EF不知道如何將其轉換爲SQL查詢。例外是'Math'或'SqlFunctions'中的一些方法 - 這些方法對於EF而言是已知的,並且它知道如何翻譯它們。您也可以使用ToList()然後進行投影,但它會將記錄提取到內存中。 – 2014-12-08 08:47:51

回答

0

不是在那個選擇否,但在某些選擇,是的。它取決於數據源。 LINQ over EF,不,但LINQ over object,是的。