2011-05-04 38 views
2

任何人都知道如何做這個查詢?我知道我可以用EndWith開始,但是我必須解析字符串,我現在可以擁有%2324%335%的比例嗎?任何方式做到這一點很容易?如何在EntityFramework中創建類似'234%4'或%2324%335%

+0

這篇文章http://stackoverflow.com/questions/1033007/like-operator-in-entity-叫它框架建議在EF中不支持LIKE。然而這篇文章是從EF1開始的,因此EF4在這方面可能會有所不同。 – 2011-05-04 23:59:06

回答

6

可以create a custom function

<Function Name="String_Like" ReturnType="Edm.Boolean"> 
     <Parameter Name="searchingIn" Type="Edm.String" /> 
     <Parameter Name="lookingFor" Type="Edm.String" /> 
     <DefiningExpression> 
     searchingIn LIKE lookingFor 
     </DefiningExpression> 
    </Function> 

而且使用

[System.Data.Objects.DataClasses.EdmFunction("Your.Namespace", "String_Like")] 
public static Boolean Like(this String searchingIn, String lookingFor) { 
    throw new Exception("Not implemented"); 
} 
+0

如何調用這個函數? – 2011-05-05 00:16:25

+0

在查詢中使用'Like'擴展方法;請參閱http://jendaperl.blogspot.com/2011/02/like-in-linq-to-entities.html。請注意,我沒有試過這個。 – SLaks 2011-05-05 00:17:56

+0

我收到此錯誤:錯誤名稱空間前綴'ef4ex'未定義。 – 2011-05-05 18:43:12

2
where entity.field.Contains("2324") && entity.field.Contains("335") 
+0

如果第一個字符串包含第二個字符串,這將不起作用 – Aducci 2011-05-05 19:13:53

+0

@Aducci:你是什麼意思?舉個例子。 – Naor 2011-05-05 21:32:58