2017-02-28 59 views
0

当Iam做一个项目时,我在一个地方感到困惑,以从表中检索唯一的值。因为我在linq查询中使用不同的groupby子句,但是我遇到了一些错误。我有两个表和分类表的ID是外键,我需要从另一个库表中检索唯一不同的ID如何在mvc剃须刀中从外键表中获取不同的值

模型

public partial class Gallery 
{ 
    public int Id { get; set; } 
    public int CategoryId { get; set; } 
    public string ImageTitle { get; set; } 
    public string Image { get; set; } 

    public virtual Category Category { get; set; } 
} 




    public Category() 
    { 
     this.Galleries = new HashSet<Gallery>(); 
    } 

    public int Id { get; set; } 
    public string CategoryName { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<Gallery> Galleries { get; set; } 
} 

这是模型中的类别ID是外键廊类

控制器

public ActionResult GalleryCata() 
    { 
     var res = db.Galleries.ToList(); 
     return View(res); 
    } 

视图

@model List<ThaniyamBank.Models.Gallery> 

    @for (var j = 0; j < Model.Count(); j++) 
     { 
      <div class="col-lg-3 col-md-3 col-sm-3 col-xs-12"> 
       <div class="hovereffect"> 
        <img src="@Url.Content("~/GalleryImages/" + @Html.DisplayFor(m => m[j].Image))" class="img-responsive" alt="" /> 
        <div class="overlay"> 
         <h2>@Html.DisplayFor(m => m[j].Category.CategoryName) </h2> 
         <a class=" fancybox info " href="@Url.Content("~/GalleryImages/" + @Html.DisplayFor(m => m[j].Image))" data-fancybox-group="gallery"><i class="fa fa-eye" aria-hidden="true"></i></a> 
         <a class="info " href="gallery.html"><i class="fa fa-link" aria-hidden="true"></i></a> 
        </div> 
       </div> 
      </div> 
     } 

我需要根据类别显示图像。当我运行应用程序时,我从表格中获取所有图像,而不是基于类别。任何人都可以请帮我解决问题?

+1

我没有看到任何“明显的,groupby”。显示你的尝试,这可能会澄清你的意思是“独特”。并显示错误。 “我有一些错误”并不意味着太多。 –

+0

当我给var res = db.Galleries.Select(x => x.CategoryId).Distinct()。ToList();在控制器中,得到了错误传入字典的模型项目类型为'System.Collections.Generic.List'1 [System.Int32]',但该字典需要一个类型为'System.Collections.Generic.List '1 [A.Models.Gallery]”。 – user256

+1

很清楚的错误信息,不是吗? –

回答

0

Select告诉EF检索某个值,因此db.Galleries.Select(x=>x.CategoryId)返回一个整数的集合,因此您会收到错误消息。

你想要的是使用Where条款:

var res = db.Galleries.Where(x => x.CategoryId == selectedCategoryId).ToList(); 

返回IList<Gallery>。您需要将int selectedCategoryId通过您的行动。

Distinct只有在您希望同一个图库多次包含在同一类别中时才需要。