2014-11-20 82 views
0

我有以下SQL查詢。我如何在LINQ中創建相同的查詢?如何在LINQ中的JOIN子句中使用IN關鍵字

select * from table1 t1 
join table2 t2 
on t1.col1 = t2.col1 
where t2.col2 in ('A','B','C') 
+0

我假設你的意思是使用ORM,如實體框架?你真的需要告訴我們它是哪個ORM以及你的c#類似什麼來幫助你正確使用 – Rhumborl 2014-11-20 22:18:47

+0

這是使用CRM Linq提供者 – Payal 2014-11-20 22:19:52

+0

你使用的是遲還是早綁定? – Sxntk 2014-11-21 14:07:20

回答

1

您可以使用Contains

string[] stringCollection = { "A", "B", "C" }; 
var query = from t1 in db.Table1 
      join t2 in db.Table2 
      on t1.col1 equals t2.col1 
      where stringCollection.Contains(t2.col2) 
      select new { t1, t2 }; 
+0

我試過這個,但得到這個錯誤: 無效'where'條件。實體成員正在調用無效的屬性或方法。 – Payal 2014-11-20 22:20:35

+0

@Payal:也許[這](http://stackoverflow.com/questions/12200034/trying-to-execute-a-where-in-invalid-where-condition-an-entity-member-is-inv)或[this](http://stackoverflow.com/questions/8881302/equivalent-to-sql-in-clause)有所幫助。 – 2014-11-20 22:25:31

+0

這是我有我目前的LINQ查詢: (從T1 table1中 表2中 上t1.col1加入T2等於t2.col1 其中t1.col2 == someStatusfield 選擇新 { A = T1, B = t2.col2 })。其中(r => rBTrim()==變量).ToList(); 而不是.Where(r => r.B.Trim()==變量),我需要使用SQL IN關鍵字和一個字符串列表。 – Payal 2014-11-20 22:28:15

0

不能在LINQ查詢 - 用 'IN' 的CRM。

你可以做的是檢索記錄,當你有一個List<Entityt>你使用LinQ或一個foreach來過濾你需要的記錄。