2010-10-12 70 views

回答

29

你可以使用SqlMethods.Like(matchExpression,pattern)

var results = from c in db.costumers 
       where SqlMethods.Like(c.FullName, "%"+FirstName+"%,"+LastName) 
       select c; 

使用這種方法的LINQ以外的SQL總會拋出NotSupportedException異常。

+0

我沒有時間用這個方法來解決問題:其中SqlMethods.Like(s.Email,id +「%」)通過一個錯誤(是的,我使用System.Data.Linq.SqlClient;我更改爲在哪裏s.Email.Contains(id)即使那是不一樣的,我可以使它改變EndsWith – 2015-10-20 17:29:30

26

嘗試使用string.Contains()與EndsWith組合。

var results = from c in db.Customers 
       where c.FullName.Contains (FirstName) && c.FullName.EndsWith (LastName) 
       select c; 
+0

我比SqlMethods更喜歡這個 – 2015-10-20 17:29:56

+2

與'like'查詢相反,這不區分大小寫。 – 2016-05-18 11:56:04

+0

如果使用實體框架,此查詢將轉換爲SQL LIKE語句,因此其大小寫敏感性取決於列/表/ db的排序規則。 – 2017-09-14 09:54:13

2
where c.FullName.Contains("string") 
1

您可以使用包含:

string[] example = { "sample1", "sample2" }; 
var result = (from c in example where c.Contains("2") select c); 
// returns only sample2 
11

嘗試這樣

var results = db.costumers.Where(X=>X.FullName.Contains(FirstName)&&(X=>X.FullName.EndsWith(LastName)) 
          .Select(X=>X); 
+3

爲什麼不使用'&&'運算符,而不是雙Where子句? – Max 2013-12-04 13:33:24

+0

@MaxMommersteeg:謝謝,更新 – 2013-12-16 09:58:54

+0

@max爲什麼不是2 where子句?如果每個where子句都在它自己的行上,那麼如果有很多長條件,它會使代碼更具可讀性。 – Phil1970 2016-08-04 16:28:11

3
String [] obj = (from c in db.Contacts 
          where c.FirstName.StartsWith(prefixText) 
          select c.FirstName).ToArray(); 
      return obj; 

StartsWith()和的endsWith()可以幫助你在這裏有很多。如果你想在字段間找到數據,那麼可以使用Contains()。

0

var StudentList = dbContext.Students.SqlQuery("Select * from Students where Email like '%gmail%'").ToList<Student>();

用戶可以在LINQ的使用類似的查詢,並填寫學生模型。

+0

如果輸入來自用戶,則容易引發SQL注入... – Phil1970 2016-08-04 16:30:09