2010-09-14 19 views
2

什麼是SQL子句,如WHERE UserName LIKE 'fr_d'的linq等效項?LINQ到SQL LIKE子句的等效數據集

我用內存,而不是一個SQL數據庫的數據集工作,所以我不認爲我可以使用類似where SqlMethods.Like(p.UserName, "Fr_d")

(不,我的VS2008的安裝承認SqlMethods甚至System.Data .Linq.SqlClient 存在的那一刻,但多數民衆贊成一個完全不同的問題)

+1

這取決於名爲fr_d的列的內容是什麼。 – 2010-09-14 19:23:05

+0

你的意思是把'LIKE'fr_d''而不是''像fr_d'? – 2010-09-14 19:28:47

+0

對不起。以爲我有。 – FixerMark 2010-09-14 19:44:57

回答

7

就像這樣:!

table.Where(row => row.StringColumn.StartsWith("prefix")) 

(你也可以打電話給ContainsEndsWith

編輯:在你的情況,你想

table.Where(p => p.UserName.StartsWith("Fr") && p.UserName.EndsWith("d") && p.UserName.Length == 4) 

或者,你也可以把一個正則表達式的Where子句中。
如果這樣做,請確保在Where調用之外創建RegEx對象,以便它不會針對每一行進行解析。

+0

請注意,他正在使用一個特殊字符和他的'LIKE'(假設他打算使用'fr_d'而不是fr_d) – 2010-09-14 19:26:54

+0

@Abe:不,我沒有注意到。 – SLaks 2010-09-14 19:28:00

+0

你的第二個例子將選擇UserName爲「Fraaaaad」的記錄,這不是相應的SQL查詢將執行的操作。 – 2010-09-14 19:37:38

0

我相信這是你真正想要的。它將允許神父{任意一個字符} d:

table.Where(p => p.UserName.StartsWith("Fr") && p.UserName.EndsWith("d") && p.UserName.Length == 4) 

不幸的是我無法找到任何東西,做類似於SQL的像LINQ到數據集條款東西...

UPDATE:LINQ vs. DataTable.Select - How can I get the same results?

他們建議使用我不熟悉的i4o,但它可能是值得研究的(該問題的提問者接受i4o作爲答案)。