我在使用 LINQ 通过特定列值从数据库获取结果时遇到问题。
这是我的表 Customer(Id, Name, Surname, ExternalID)。ExternalID 是具有特定字符串模式的 varchar 列,例如 01_johnDoe。
假设我想获得客户 johnDoe,而我的方法获得字符串 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()
但它不起作用。有任何想法吗 ?比你