【发布时间】:2014-10-13 05:15:09
【问题描述】:
我首先使用 EF 代码。两张桌子。
公司表(字段:CompanyName)和标签表(TagName)。公司表有指向标签表的链接
public class Company
{
public int Id { get; set; }
public string CompanyName { get; set; }
public virtual ICollection<Tags> Tags { get; set; }
}
我想检索 CompanyName 包含已传递字符串的所有公司,并检索所有具有该字符串作为标签的公司
var result = from c in _db.Company
select new CompaniesVM
{
Id = c.Id,
CompanyName = c.CompanyName
};
if (!String.IsNullOrEmpty(searchString))
{
result = result.Where(s => s.CompanyName.Contains(searchString));
}
我的数据库包含:
公司名称:test1
公司名称:公司测试
如果我使用 searchString "test" 运行代码,它只会捕获第一条记录。 Contains 方法不捕获第二条记录。这是为什么?如何捕获所有带有“test”字符串的记录?
如果我有 TagName "test"
公司名称:ABC Inc. 标签:TagName : test
如何查看标签表并获得公司?
我在下面使用多对多示例架构
我可以在一个查询中完成所有操作吗?也许使用延迟加载方法?
如果您能指出类似的示例或示例代码,我们将不胜感激
【问题讨论】:
-
第二家公司是“测试”还是“测试”?
-
都是小写的“test”
-
@artm 你是对的我重新检查它不是小写。哎呀。你知道怎么查看Tag表中的记录吗?
-
标签表还是标签列?从您的示例看来,标签是同一张表中的另一列,然后执行
result.Where(s => s.CompanyName.Contains(searchString) || s.TagName.COntains(SearchString)) -
@artm 它是一个标签表。 company 表有一个指向 Tag 表的链接
标签: linq entity-framework ef-code-first