天天看點

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表達式就可以得到相應的結果了。看着很簡單      

繼續閱讀