如何在LINQ中使用通配符?

如何在LINQ中使用通配符?,linq,entity-framework,Linq,Entity Framework,如何修改下面的LINQ查询,使OrganizationName包含通配符?如果organizationName是'ABC',我需要返回'ABC(佛罗里达州迈阿密)'。模式始终是orgName后跟空格,然后在括号“()”中是城市和州 var orgId = dc.Contacts.Where(on => on.ContactTypeID == 2 && on.IsActive == true && on.OrganizationName.Contains(or

如何修改下面的LINQ查询,使OrganizationName包含通配符?如果organizationName是'ABC',我需要返回'ABC(佛罗里达州迈阿密)'。模式始终是orgName后跟空格,然后在括号“()”中是城市和州

var orgId = dc.Contacts.Where(on =>
on.ContactTypeID == 2 &&
on.IsActive == true &&
on.OrganizationName.Contains(organizationName)
)
.Select(on => on.ContactID).SingleOrDefault();

谢谢

您可以在.OrganizationName.StartsWith(OrganizationName)上使用

我认为您需要对数据进行一些规范化。这是我们必须处理的。组织名称位于其自己的字段集中。我不同意这一点,但它不会很快改变。那么位于两个城市的组织呢?Xanatos的答案并没有更好…请看@Albin的评论。你真的应该让组织的位置在它自己的字段中与名称分开。我考虑过使用.StartwsWith(),但这仍然可以返回一个匹配列表——这就是问题的原因。上面的连接应该可以很好地工作。那么对于您的数据,不能有多个位置的组织名称,对吗?否则@xanatos answer与我的匹配列表没有什么不同。ABC(纽约州纽约市)和ABC(伊利诺伊州芝加哥市)在这种情况下均有效。
var orgId = dc.Contacts.Where(on =>
    on.ContactTypeID == 2 &&
    on.IsActive == true &&
    on.OrganizationName.StartsWith(organizationName))
        .Select(on => on.ContactID).SingleOrDefault();
on.OrganizationName.StartsWith(organizationName + " (");