2011-02-17 30 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> 
相关问题