星期二, 4月 08, 2008

linq 相對於 tsql 的 in, like

今天在處理一個datatable想要濾出我想要的值..就把linq這把大刀拿起來..開始工作..
一般來說tsql我們都會這樣下..

Select * from table1 where id in (1,2,3,4)

發現..linq裡面好像沒有in這東西..一﹏一||..
按照慣例..當然是google一下..哈..也很順利找到一些答案..
下面這兩篇文章寫的很詳細..自己看..不加累述了
http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/10/16/linq-to-sql-like-operator.aspx
http://www.cnblogs.com/126/archive/2007/08/01/839448.html

這是我處理datatable的原始碼..

int[] gidT = new int[] { 2, 7, 8, 9, 10 };
var dtT = from enumDt in dt.AsEnumerable()
where gidT.Contains(enumDt.Field<int>("g_id"))
select enumDt;

2 則留言:

匿名 提到...

您好
我是使用DataTable
依照您的範例,適用於 "in"
那,"Like" 要如何使用呢??
我試用
Dim aaa = From bbb In dt.AsEnumerable Where SqlMethods.Like(bbb.Item("B"), "a%")
DataGridView1.DataSource = aaa.CopyToDataTable
結果on error
訊息如下
方法 'Boolean Like(System.String, System.String)' 不可使用於用戶端; 它只適用於轉譯為 SQL。

謝謝

Bibby 提到...

like可以這樣用..
string[] strArr = { "abc", "bcd", "efg" };
var aaaa = from a in strArr
where a.IndexOf("b") != -1
select a;
試試看ㄅ..