2012-12-21 157 views
1

我有一個問題,從數據庫中獲取使用LINQ的特定列值的結果。實體框架4.0與LINQ使用子串查詢

這是我的表Customer(Id,Name,Surname,ExternalID)。 ExternalID是一個具有特定字符串模式的varchar列,例如01_johnDoe。

假設我想獲得顧客johnDoe,並且我的mehod得到了字符串johnDoe。

我能夠通過這種方式來做到這一點:

public<Customer> GetMeACustomer(string customerExternalID) 
{ 
using(var context=new MyContext()) 
{ 

var customerObject=(from c in contex.Customer where c.ExternalID.Contains(customerExternalID)).Single() 

} 

} 

此代碼是不夠好,只是因爲發送到數據庫查詢使用操作等。這很慢(我有很多客戶)。這段代碼

var example = ExternalIDFromDatabase.Substring(ExternalIDFromDatabase.IndexOf("_") + 1, customerExternalID.Count()); 

我可以簡單地說

var customerObject=(from c in contex.Customer where c.ExternalID.Substring(c.ExternalID.IndexOf("_") + 1, customerExternalID.Count())==customerExternalID).Single() 

但它不工作: 我不能LINQ像這裏面實現。 任何想法? 比你

+0

檢查此[支持和不支持的LINQ方法](http://msdn.microsoft.com/en-us/library/bb738550.aspx) – Krishnakumar

回答

2

應該當你customerExternalID.Length或當您創建本地變量替換customerExternalID.Count()(讓說customerExternalIDCount)和分配數爲它工作。可能提供商嘗試將此調用轉換爲SQL。

順便說一句,你可能要使用Substring方法沒有指定length。如果數據庫中存在例如01_johnRobin02_johnRobins,您將得到2個結果johnRobincustomerExternalID

+0

它通過替換Count()與長度:) :) 謝謝 – Avicena00