2017-02-28 60 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只有在您希望同一個圖庫多次包含在同一類別中時才需要。