【发布时间】:2012-12-21 07:32:56
【问题描述】:
我在使用 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()
但它不起作用。 有任何想法吗 ? 比你
【问题讨论】:
标签: .net linq entity-framework-4