2009-11-05 15 views

回答

2
var selection = records.Where (r => r.Col.Contains (param)); 
+2

StartsWith也意味着根据http://srtsolutions.com/blogs/billwagner/archive/2007/08/12/linq-2-sql-string-functions.aspx – 2009-11-05 15:56:14

+1

有趣的SQL喜欢,但并不明显。属于你需要知道的技巧。为了更好的可维护性,我会坚持像Dinah建议的“Contains”或“Like”。 – 2009-11-05 16:02:38

4
Table.Where(t => t.col.Contains(param)); 

...应该做的伎俩。

4

来源:http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/10/16/linq-to-sql-like-operator.aspx

挖掘到System.Data.Linq.SqlClient命名空间中,我发现叫SqlMethods一个小助手类,它可以在这样的情况下非常有用。 SqlMethods有一个名为像方法,可以在一个LINQ用于SQL查询:

var query = from c in ctx.Customers 
      where SqlMethods.Like(c.City, "L_n%") 
      select c; 

这种方法得到的字符串表达式检查(客户所在的城市在这个例子中),并测试针对的模式提供就像你在SQL中编写一个LIKE子句一样。

使用上面的查询生成所需的SQL语句:

SELECT CustomerID, CompanyName, ... 
FROM dbo.Customers 
WHERE City LIKE [L_n%] 
+0

这只是我,还是这个矫枉过正的时候Contains做他需要的东西? – 2009-11-05 15:59:08

+0

@Justin Niessner:这里没有任何争论。在任何其他答案被列出之前,我做了Google搜索,这就是我发现的。 – Dinah 2009-11-05 16:00:38

+0

@Dinah够了。 Contains()通常适用于大多数情况。 SqlMethods.Like()适用于开发人员想要更多地控制生成的SQL的更复杂的情况。 – 2009-11-05 16:04:29

0
var item = from SomeCollection where someCondition select I; 
0

您可以使用包含在LINQ的条款是一样的SQL LIKE。你可以找到如下代码。

var query = from e in emp where e.name.Contains("Mark") select e;

相关问题