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