天天看点

sqlserver中的in语句在C# linq中的写法

我们知道,在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表达式就可以得到相应的结果了。看着很简单      

继续阅读