c# - 如何使用 linq 改进查询
问题描述
我有点卡住了,我做了一个新项目,但由于查询而出现超时问题。
即使我尝试了多次,我也不知道 linq 中改进一个查询的语法。
查询是:
var contactslist = (User as CustomPrincipal).contacts;
var contacts = from m in db.ADDR_DEST.toList()
from n in contactslist
where m.ADDR_COUNTRY == n.country && m.ADDR_TPL_TYPE == n.tpl_type
select m;
但是我想在我有不同的参数之前不启动这个查询,所以我删除了 .toList() 以添加一些条件
contacts.where(..);
然后我想启动我的查询,但我得到了一个类型错误,它必须是一个列表<>,但在这种情况下它是一个 Iqueryable。
你能帮我吗?完成所有设置后,还有其他方法可以启动此查询吗?
解决方案
你可以这样做:
db.ADDR_DEST.Join(contactslist,
addr => new { country = addr.ADDR_COUNTRY, type = addr.ADDR_TPL_TYPE },
cont => new { country = cont.country, type = cont.tpl_type },
(addr, cont) => addr)
.ToList();
那么,如果要选择符合一定要求的通讯录:
db.ADDR_DEST.Join(contactslist.Where(...).ToList(),
addr => new { country = addr.ADDR_COUNTRY, type = addr.ADDR_TPL_TYPE },
cont => new { country = cont.country, type = cont.tpl_type },
(addr, cont) => addr)
.ToList();
希望对你有帮助
推荐阅读
- python - 捕获和处理流程的输出
- ios - 使用 NavigationController 进行简单的后退导航
- actionscript-3 - 来自在图像加载器内部创建的位图的空值
- javascript - 基于 JS 表单的基本身份验证仍然显示浏览器凭据窗口?
- c - 循环内的 strcat() 与 sprintf()
- java - 将强制转换 HashMap 更改为 Map 时出错
- angular - swagger codegen --> angular6: rxjs observable compile error
- java - 为什么从 try-catch 块(似乎)返回 CompletableFuture.completedFuture(...) 会导致此错误?
- flash - 在这种情况下,我怎么知道 _root 是什么意思?
- git - 无法安装红帽 git