Linq with Multi包含在MultiPart中

时间:2013-11-19 00:30:19

标签: c# sql linq

我有一个我需要帮助的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指令或汇编引用? )

1 个答案:

答案 0 :(得分:1)

您应该在列表中拨打Contains,而不是在您要查找的元素上:

where p.cLastName.StartsWith(lastname) || p.cSpouseLastName.StartsWith(lastname) && uids.Contains(p.cEmployeeID)

它将在您的SQL查询中翻译成IN子句。