这是我的查询
return (from l in Context.DctLink
join t in Context.DctTabel on l.BType equals t.DocType
join t2 in Context.DctTabel on l.TabelNr equals t2.TabelNr
where l.AType == docType || l.AType == 0
select new { t.TabelNr, t2.Naam, t.Titel })
.Union(from l in Context.DctLink
join t in Context.DctTabel on l.AType equals t.DocType
join t2 in Context.DctTabel on l.TabelNr equals t2.TabelNr
where l.BType == docType || l.BType == 0
select new { t2.TabelNr, t2.Naam, t.Titel })
.Join(Context.TimIcon.Where(q => q.Timweb && q.ShowId.ToInt32() > 0),
x => x.TabelNr,
y => y.TabelNr,
(x, y) => new LookupItem
{
Id = x.TabelNr,
Name = x.Titel,
Tag = x.Naam
}).ToList();
我希望能够做到q.ShowId.ToInt32() > 0
。但我得到一个System.Unsupported Exception。这在链接查询中是不是可能,或者我只是忽略了一些简单的
提前致谢
答案 0 :(得分:0)
这取决于您的LINQ提供商。 LINQ to Objects 支持几乎任何东西。您正在使用的那个( LINQ to Entities 或 LINQ to SQL 或类似的东西)不支持所有内容,因为它需要理解您的表达式并将其转换为SQL (它不能用任何表达方式做到这一点)。
解决此问题的最简单方法是在某个时刻调用AsEnumerable()
,以便将序列(直到该点)转换为内存中序列,这样您就可以回到 LINQ to Objects ,您可以在其上执行(以前不支持的)逻辑。
答案 1 :(得分:0)
您需要使用AsEnumerable
或ToList
从数据库中获取数据,然后您可以使用所需的任何方法。否则无法实现,因为EF Query Provider
无法知道如何将您的方法转换为SQL
。