在sql查詢語句中,in 在linq 中用contains,並且contains前面是數組,而后面是列名,如:
轉換成Linq 是這樣的:
如果sf是變量,是在程序中根據用戶選擇的條件臨時添加的,sf可以為空,也可不為空,
在程序中定義sf,在程序中賦值為:sf="合同工","臨時工"
var IDquery = from c in jtdc.CataLogDetails
where (c.LB == "身份" && new string[] {sf}.Contains(c.LM))
select g.Key.BH;
where (c.LB == "身份" && new string[] {sf}.Contains(c.LM))
select g.Key.BH;
如果用IDQuery查詢的話就查詢不出來,因為sf 在此是一個string 類型的變量,new string[] {sf},這個數組中的長度是1,而不是二,也就不會根據“合同工”和“臨時工”來找,因此就沒有查詢結果。
因此只能用sf.split(',')產生數組來查詢
所以正確的LINQ語句是:
var IDquery = from c in jtdc.CataLogDetails
where (c.LB == "身份" && sf.Split(',').Contains(c.LM))
select g.Key.BH;
where (c.LB == "身份" && sf.Split(',').Contains(c.LM))
select g.Key.BH;