Tom*_*len 2 c# linq asp.net contains
这很好用:
var q = (from c in db.tblLiteCategorySpecs where CategoryIDs.Contains(c.CategoryID) select c.SpecID).Distinct().ToList();
var qq = (from s in db.tblSpecifications where q.Contains(s.id) select s);
Run Code Online (Sandbox Code Playgroud)
但是我现在需要在第一个查询中返回另一个字段:
var q = (from c in db.tblLiteCategorySpecs where CategoryIDs.Contains(c.CategoryID) select new { c.SpecID, c.FriendlyName }).Distinct().ToList();
var qq = (from s in db.tblSpecifications where q.Contains(s.id) select s);
Run Code Online (Sandbox Code Playgroud)
所以q.contains现在失败了,我需要以某种方式处理q查询SpecID字段.有人知道怎么做吗?
好吧,你可以尝试:
var qq = from s in db.tblSpecifications
where q.Select(x => x.SpecID).Contains(s.id)
select s;
Run Code Online (Sandbox Code Playgroud)
换句话说,在使用之前投影结果Contains.我不知道SQL会是什么样子.
顺便说一句,我个人只是写这个:
var qq = db.tblSpecifications
.Where(s => q.Select(x => x.SpecID).Contains(s.id));
Run Code Online (Sandbox Code Playgroud)
我只使用查询表达式语法,它确实使事情更简单.我还强烈建议您使用多行进行查询 - 它可以真正帮助提高可读性.