【问题标题】:search in ICollection entity在 ICollection 实体中搜索
【发布时间】:2016-10-19 02:21:22
【问题描述】:

我的模型中有 ICollection Actor。演员有名字参数。 我想选择带有所选名称的演员的电影。按钮中的 SearchActor 字符串,

namespace AEXSoft.Models
{
    public class Movie
    {
    public int MovieID { get; set; }
    public string Title { get; set; }
    public string  Date { get; set; }
    public int Budget { get; set; }
    public string  Genre { get; set; }
    public virtual ICollection<Actor> Actors { get; set; }
}

}

在电影控制器中我进行了查询

if (!String.IsNullOrEmpty(SearchActor))
                {  
                     Movie = Movie.Where(c => Actors.Name.Contains(c.Actors.SearchActor));
                }
 return View(Movie.ToList());

*

“ICollection”不包含“名称”的定义,也没有 扩展方法“名称”接受类型的第一个参数 'ICollection' 可以这样吗?

*

同样的任务,但是搜索所有的 Actor。

Movie=ctx.Movie.Where(s => s.Actors.Contains(SearchActor)).SelectMany(u => u.Actors).ToList();

【问题讨论】:

  • 第一个查询将返回电影列表,即。 List 与选定的演员(而不仅仅是单个演员)..你想要吗?第二个相同,但与电影..如果你只想要一个,使用 .FirstOrDefault()
  • 是的,我想要包含所选演员的电影列表。这是真的,但我想到了另一个问题,我如何编写查询来搜索特定演员的特定电影。
  • 稍后我会测试我的代码
  • 谢谢,彼得亚当!
  • 你可以这样简化:Movies = Movie.Where(c => c.Actors.Name.Contains(SearchActor) && c.Title.Contains(SearchMovie)).ToList()跨度>

标签: asp.net entity-framework linq collections


【解决方案1】:

你想要这样的东西

var movieList = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor))).ToList()

【讨论】:

  • 是的。有用。但我把它改成 {Movie = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor)));} return View(Movie.ToList());
【解决方案2】:

首先,您需要正确使用lamba 方法,例如:.Where(c => c.Actors...) 其次,这里 c.Actors.SearchActor 您正在尝试访问 List 上的属性 SearchActor .. 显然没有。

试试这个:

var SearchActor = "Arnold";

if (!String.IsNullOrEmpty(SearchActor))
{
    var allMovies = Movie.Where(m => m.Actors.Any(a => a.Name.Contains(SearchActor))).ToList();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多