LINQを使用して特定の列の値でデータベースから結果を取得するのに問題があります。
これは私のテーブルCustomer(Id、Name、Surname、ExternalID)です。ExternalIDは、01_johnDoeなどの特定の文字列パターンを持つvarchar列です。
顧客の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()
}
}
データベースに送信されるクエリが演算子LIKEを使用しているという理由だけで、このコードは十分ではありません。これは遅いです(私には膨大な数の顧客がいます)。linq内に次のようなものを実装できませんでした:
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()
しかし、それは機能していません。何か案は ?あなたより