如何在 linq 查询中使用方法?

How can I use a method withing a linq query?

这是我的查询

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 异常。这在 link 查询中是不可能的,还是我只是忽略了一些简单的事情

提前致谢

这取决于您的 LINQ 提供商。 LINQ to Objects 几乎支持任何东西。您正在使用的那个(LINQ to EntitiesLINQ to SQL 或类似的东西)并不支持所有东西,因为它需要理解你的表达并将其翻译成 SQL(它不能用任何类型的表达来做到这一点)。

解决此问题的最简单方法是在某个时间点调用 AsEnumerable(),以便将序列(直到该时间点)转换为内存中的序列,因此您将退回到 LINQ to Objects 并且您可以在其上执行(以前不受支持的)逻辑。

您需要使用AsEnumerableToList从数据库中获取数据,然后您可以使用任何您想要的方法。否则这是不可能的,因为 EF Query Provider 不知道如何将你的方法翻译成 SQL.