2011-02-17 28 views
1

這裏是我的LINQ to實體查詢,我得到這個錯誤無法創建類型「閉合式」的恆定值

「無法創建類型‘閉合式’的恆定值。只有原始類型('如Int32,字符串和Guid')支持在這種情況下。 「

是否有人知道如何解決它或解決方法。

PS。我使用LINQ到實體沒有LINQ to SQL的

List<int> listint 
List<int> listintTwo 

    return (from oa in _entity.TableOne 
      join cc in _entity.TableTwo on oa.TableSix.ColumnOne equals cc.TableSix.ColumnOne 
      join os in _entity.TableThree on oa.TableThree.ColumnTwo equals os.ColumnTwo 
      join cs in _entity.TableTwotatus on cc.TableTwotatus.ColumnThree equals cs.ColumnThree 
      join app in _entity.TableFour on cc.TableFour.ColumnFour equals app.ColumnFour 
      join cl in _entity.TableFive on app.TableFive.ColumnFive equals cl.ColumnFive 
      where listint.Any(x =>x == cc.TableTwotatus.ColumnThree) 
      && listintTwo.Any(x => x == os.ColumnTwo) && cc.TableSix.ColumnOne == ColumnOne 
      select new TableFive {ColumnFive = cl.ColumnFive, CompanyName = cl.CompanyName}).ToList(); 

回答

1

試着改變你的來電Any(...)Contains(...)

where listint.Contains(cc.TableTwotatus.ColumnThree) 
&& listintTwo.Contains(os.ColumnTwo) && ... 

我敢肯定它具有引用加盟實體與你的問題lambda表達式(充當閉包)。

0

您無法查詢具有複雜類型的實體。所以首先從EF獲得結果,然後加入你的複雜類型。

List<int> listint 
List<int> listintTwo 

return (from oa in _entity.TableOne 
     join cc in _entity.TableTwo on oa.TableSix.ColumnOne equals cc.TableSix.ColumnOne 
     join os in _entity.TableThree on oa.TableThree.ColumnTwo equals os.ColumnTwo 
     join cs in _entity.TableTwotatus on cc.TableTwotatus.ColumnThree equals cs.ColumnThree 
     join app in _entity.TableFour on cc.TableFour.ColumnFour equals app.ColumnFour 
     join cl in _entity.TableFive on app.TableFive.ColumnFive equals cl.ColumnFive).ToList(). 
     where listint.Any(x =>x == cc.TableTwotatus.ColumnThree) 
     && listintTwo.Any(x => x == os.ColumnTwo) && cc.TableSix.ColumnOne == ColumnOne 
     select new TableFive {ColumnFive = cl.ColumnFive, CompanyName = cl.CompanyName}).ToList();</pre> 
相關問題