我们知道,在sqlserver中一个in语句通常是这样写的:
SELECT * FROM dbo.表名 WHERE SortGID IN ('f30ce6eb-92ab-4ee8-af58-82c7a63c15b7','c98bd939-258b-43d1-8e5b-2e45fd291ef5','f30ce6eb-92ab-4ee8-af58-82c7a63c15b7')
那它在C#中如果使用linq实现应该怎么写呢。我做了下研究
这3个值属于sort表的gid,假定其以逗号分隔的字符串形式传入,首先转变为树组形式
string[] arr = gids.Split(',');
然后构造lambda表达式。其中sort是表对应的model对象。
Expression<Func<Sort, bool>> lambda = m => true;
lambda = lambda.And(m => arr.Any(x => x == m.GID));
使用lambda的And方法及arr的Any方法把语句连接起来。m是sort的引用,x是arr树组的一个对象。利用树组的any方法遍历树组对象,
然后和sort表的gid比较,只要相等就表示符合要求。
再然后构造一个方法,使用这个lambda表达式就可以得到相应的结果了。看着很简单