c# - 如何搜索导航属性的属性

标签 c# entity-framework where-clause navigation-properties

我正在使用 ASP.NET 创建一个数据库,它具有两个类,CountriesSpecies。 Species 模型包含 Country 类型的 ICollection,我试图允许在 Species Index View 上搜索字符串,不仅检查物种的名称,而且如果用户键入一个国家的名称,以返回 Species who's Country Collections include a Country with a Name matching the search string:

public ActionResult Index(string searchString, string Poison, string Venom)
{
    var species = db.Species.Include(s => s.Countries);
    if (!String.IsNullOrEmpty(searchString))        
    {   
        species = species.Where(s => s.Name.Contains(searchString) || **s has a country who's Name contains searchString**);    
    }
}

这是我关于 stackoverflow 的第一个问题,我不确定需要多少失败尝试的示例,但我收到的错误消息主要是基于无法将类型 Country 转换为 String:

Values of type 'collection[NSDBz.DAL.Country(Nullable=True,DefaultValue=)]' can not be converted to string.

我可以看到有类似的问题被问到,但他们的要求有点复杂,所以以我目前的技能水平,我无法将那里的解决方案应用到我这里的问题。

最佳答案

根据您的错误,您似乎正在尝试将 Countries 集合与字符串进行比较,而不是检查集合中是否有任何国家 具有匹配项姓名。我建议尝试类似于以下内容的操作:

s.Countries.Any(c => c.Name.Contains(searchString))

关于c# - 如何搜索导航属性的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50837237/

相关文章:

javascript - AJAX-Post 之后文件未下载

c# - 针对页面上特定用户操作的 ASP.NET MVC 网站代码(包括 Javascript)的性能分析

php - MySQL 中的 WHERE 子句用于选择所有

mysql - 有没有办法通过 WHERE IN 语句将嵌套子查询中的别名列名传递给 UPDATE 语句?

mysql - SELECT 从同一表中获取两个条目,按日期区分,在一行中

c# - 下面两个 ObservableCollections 的功能是否相同?

c# - 读取 HttpResponseMessage.Content 在读取 webapi 2 token 时抛出 Newtonsoft.Json.JsonReaderException

c# - 如何快速加载相关实体

c# - Entity Framework 迁移 NuGet 错误

c# - Entity Framework 查询ToString不会产生SQL查询