EF lambda 匹配数组的多条件查询数据库

sun_well 2021-04-08 11:08:54
例如我有一个列表testList
public class testList
{
public string name {get;set;}
public string code {get;set;}
}

我想去数据库找同时匹配name和code的行
写成
db.where(m=>testList.contains(new {m.name,m.code}))
或者
db.where(m=>testList.any(any=>any.name==m.name&&any.code==m.code))
EF会抛出无法翻译的异常

我现在都是
var queryList=db.where(m=>m.testList.select(s=>s.name).contains(m.name)&&m.testList.select(s=>s.code).contains(m.code)).toList();
var result=queryList.where(m=>testList.contains(new {m.name,m.code}))
这样在筛选两次,感觉效率很低

想在数据库进行一次查询应该怎么写
...全文
3538 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun_well 2021-04-08
  • 打赏
  • 举报
回复
引用 2 楼 死亡中的独行者 的回复:
试试这样呢 db.where(m=>testList.Select(p=>p.name+p.code).Contains(m.name+m.code))
还没试,不过这样的处理方式并不严谨啊,a,bc和ab,c满足条件但并不是想要的
sun_well 2021-04-08
  • 打赏
  • 举报
回复
引用 1 楼 Logerlink 的回复:
db.AsEnumerable().where(m=>testList.any(any=>any.name==m.name&&any.code==m.code)) 不过表数据多时会慢
本身是想优化一下的,如果慢的话那肯定就不行了。
  • 打赏
  • 举报
回复
试试这样呢 db.where(m=>testList.Select(p=>p.name+p.code).Contains(m.name+m.code))
Logerlink 2021-04-08
  • 打赏
  • 举报
回复
db.AsEnumerable().where(m=>testList.any(any=>any.name==m.name&&any.code==m.code)) 不过表数据多时会慢
「LLM那些事」系列第 4 篇《上下文窗口的边界》,文章连接:https://blog.csdn.net/houwenjin/article/details/163999753。 演示什么:在「预测」Sheet 的黄色格子里输入一句话(默认「来泡一杯」),四个「模型」——分别只统计最后 1 / 2 / 3 / 4 个字的 n-gram 查表——同时预测下一个字。同一个输入,看的上下文越长,候选越少、预测越确定: ┌────────────────┬──────────┬───────────────┬──────┐ │ 只看最后几个字 │ 用的前缀 │ 候选下一字数 │ 预测 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 1 个 │ 杯 │ 3(茶/子/水) │ 模糊 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 2 个 │ 一杯 │ 2(茶/水) │ 收窄 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 3 个 │ 泡一杯 │ 1(茶) │ 确定 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 4 个 │ 来泡一杯 │ 1(茶) │ 确定 │ └────────────────┴──────────┴───────────────┴──────┘

8,492

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧