包含在linq查询中

嗨我正在使用entity framework和LinQ。 我有一个名为users的表对象。 我有一个名为userids的列表。 我必须找到字符串中包含ids的所有用户。 我必须做以下操作……

select * from users where userid in (userids); 

我试着像这样解决这个问题

 var u = context.users.Where(o=> usersid.Contains(o=> o.userid)).Select(o=> o); 

但它给出了编译错误。 怎么解决这个?

试着用这个:

 protected Expression> BuildContainsExpression(Expression> valueSelector, IEnumerable values) { if (null == valueSelector) { throw new ArgumentNullException("valueSelector"); } if (null == values) { throw new ArgumentNullException("values"); } ParameterExpression p = valueSelector.Parameters.Single(); if (!values.Any()) { return e => false; } var equals = values.Select(value => (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value, typeof(TValue)))); var body = equals.Aggregate((accumulate, equal) => Expression.Or(accumulate, equal)); return Expression.Lambda>(body, p); } 

像这样调用方法:

 var u = context.users.Where(BuildContainsExpression(e => e.Userid, userids)).ToList(); 

这将解决您的问题。

放句号而不是逗号。

尝试

 var u = context.users.Where(o=> usersid.Contains(o=> o.userid)).Select(o=> o); 
 var u = context.users,Where(o=> usersid.contains(o=> o.userid)),select(o=> o); 

假设这是您正在使用的代码

 var u = context.users.Where(o=> usersid.Contains(o => o.userid)).Select(o => o); 

确保你正在使用. 而不是,并且你的方法上有正确的案例。

假设User.userid是与User.userid相同类型的IEnumerable ,请尝试将LINQ查询更改为:

 var u = context.users.Where(o=> userids.Contains(o.userid));