Linq to SQL添加IN等效

时间:2014-06-13 10:09:44

标签: sql linq

我有这个查询工作正常

var badWords = _db.Restrictions.Where(x => x.Value.Length == 4 && x.Status_ID == 1 && x.RestrictionType.Status_ID == 1);

现在我正在尝试添加查询以检查我的类型ID是否包含某个ID列表,如下所示

var idlist = new int[] { 28,24,16,13,14,15 };
var badWords = _db.Restrictions.Where(x => x.Value.Length == 4 && x.Status_ID == 1 && x.RestrictionType.Status_ID == 1 && idlist.Contains(x.RestrictionType)  );

但在包含

下收到错误

错误5' int []'不包含'包含'的定义和最好的扩展方法重载' System.Linq.Queryable.Contains(System.Linq.IQueryable,TSource)'有一些无效的论点

2 个答案:

答案 0 :(得分:1)

您的单值状态测试

&& x.RestrictionType.Status_ID == 1

表示RestrictionType是一个子对象;据推测,那么,您正试图针对限制类型的特定实例进行测试:

&& idlist.Contains(x.RestrictionType.Id)

答案 1 :(得分:0)

检查这个

 var badWords = _db.Restrictions.Select(x => x.Id).Except(idlist);
 badWords=badWords.Where(x => x.Value.Length == 4 && x.Status_ID == 1 && x.RestrictionType.Status_ID == 1 );