小编Ste*_*yon的帖子

EF6:通过 IQueryable 使用参考/查找数据

我想在查询中使用列表中预加载的查找数据。我需要查询作为 IQueryable 返回,因为它在网格中使用并被分页(此处不包括)。我需要从查找中加载标签以避免连接(更多内容在实际代码中)。

我知道我可以执行 ToList() 并对其进行后处理,但我需要 IQueryable。这是代码:

// Run in intialization other code...
var contactLookups = new ContactsDbContext();
List<StatusType> _statusTypes = contactLookups.StatusTypes.ToList();


    public IQueryable GetQuery()
    {
        var contactsCtx = new ContactsDbContext();
        IQueryable query = contactsCtx.Select(contact => new
        {
            Id = contact.Id,
            FullName = contact.FirstName + " " + contact.LastName,
            CompanyName = contact.CompanyName,
            Status = _statusTypes.FirstOrDefault(l => contact.StatusId == l.Id).Label
        });
        return query;
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码会引发错误,因为 EF/LINQ 无法将内存中的列表形成为 SQL(出于明显的原因)——除非添加/更改了某些内容。

我想以某种方式告诉 EF 在 SQL 之后应用查找或达到此效果。我读过有关使用 EF Helper 代码和表达式执行类似操作的内容,但我找不到那篇文章了。

请注意,我对查找本身很灵活。唯一不可协商的是“contact.StatusId”(int),但结构的其余部分“_statusTypes.FirstOrDefault(l => contact.StatusId …

c# linq lookup iqueryable entity-framework-6

5
推荐指数
1
解决办法
2075
查看次数

标签 统计

c# ×1

entity-framework-6 ×1

iqueryable ×1

linq ×1

lookup ×1