如何根据对象列表中包含的值创建对象列表C#

时间:2013-12-13 14:00:24

标签: c# asp.net-mvc asp.net-mvc-4

我正在寻求帮助。 我正在做一个基于MVC的练习。 我的模型包含2个类。 DVD和类别

public class DVD
{
public int ID
{ get; set; }

public string Title
{ get; set; }

public decimal Price
{ get; set; }

public int Quantity
{ get; set; }

public int Duration
{ get; set; }

public string Image
{ get; set; }

public virtual IList<Category> Categories_List
{ get; set; }}

现在作为方法的类别包含以下

 public class Category
    {
    public int Id
    { get; set; }

    public string Title
    { get; set; }

    public virtual IList<DVD> DVDs
    { get; set; } }

DVD和类别都在Model文件夹下。 我想要做的是在我的类别控制器中创建一个列表(在公共ActionResult详细信息的方法内(int id = 0)) 例如,收集id为1的所有类别的dvds。

我找到了类似的东西,但是当我必须检查DVD的类别ID是否与我正在寻找的那个相同时,我遇到了问题。

Search list of object based on another list of object c#

任何人都可以帮我做吗? 谢谢

3 个答案:

答案 0 :(得分:1)

使用LINQ Where。这将返回与特定类别匹配的电影的调用:

var moviesMatchingCategory = _masterMovieList.Where(ml => ml.Categories_List.Any(cl => cl.Id == categoryIdToCompare)).ToList();

答案 1 :(得分:1)

如果您可以使用linq,这将有所帮助:

public IEnumerable<DVD> FindDvdByCategoryId(int categoryId, IEnumerable<DVD> dvdEnumerable)
    {
        return dvdEnumerable.Where(dvd => dvd.Categories_List.Any(c => c.Id == categoryId)).ToList();
    }

答案 2 :(得分:0)

List<DVD> list = dvds.Where(x=>x.Categories_List.Contains(y=>y.Id==Id)).ToList();

尝试以上方法。