我有一个我需要帮助的Linq查询...我基本上有一个INT列表,我想在我的最终列表中过滤/包含。
第1部分返回一个IntID用户ID列表,这是我想要的正确列表....
List<int> uids = (from p in context.userid
where p.sSurrogateID == id && p.sView
select p.sParentID).ToList();
然后,我想使用此列表来过滤我的搜索的第2部分......
var query = from p in context.Clients
join e in context.Properties on p.cClientID equals e.pClientID
where p.cLastName.StartsWith(lastname) || p.cSpouseLastName.StartsWith(lastname) && p.cEmployeeID.Contains(uids) {{ THIS IS WHERE I AM STUCK - the filter on UIDs throws error}}
select new
{
ClientID = p.cClientID,
PropertyID = e.pPropertyID,
};
var s = query.ToList();
或者我可以在查询后过滤此内容,如果我能想出来......
我在where子句中尝试了这个,它不会编译...
'System.Nullable'不包含'contains'的定义,并且没有扩展方法'contains'可以找到接受类型'System.Nullable'的第一个参数(你是否缺少using指令或汇编引用? )
答案 0 :(得分:1)
您应该在列表中拨打Contains
,而不是在您要查找的元素上:
where p.cLastName.StartsWith(lastname) || p.cSpouseLastName.StartsWith(lastname) && uids.Contains(p.cEmployeeID)
它将在您的SQL查询中翻译成IN
子句。