Linq包含运算符

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字段.有人知道怎么做吗?

Jon*_*eet 7

好吧,你可以尝试:

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)

我只使用查询表达式语法,它确实使事情更简单.我还强烈建议您使用多行进行查询 - 它可以真正帮助提高可读性.