2017-02-28 17 views
0

Iamがプロジェクトをやっているとき、私はテーブルから一意の値だけを取得する場所で混乱しました。 linqクエリ内の別のgroupby節については、私はいくつかのエラーがあります。私は2つのテーブルを持っており、カテゴリテーブルのidが外部キーであると私は別のギャラリーテーブルからのみ個別のIDを取得する必要がmvc razorの外部キーからテーブルから別の値を取る方法

モデル

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; } 
} 

これは区分がへの外部キーであるモデルですギャラリークラス

コントローラ

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

"distinct、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)は整数のコレクションを返します。したがって、エラーメッセージが表示されます。 IList<Gallery>を返し

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

:あなたが欲しい

Where句を使用することです。あなたはあなたの行動にint selectedCategoryIdを渡す必要があります。

Distinctは、同じギャラリーが同じカテゴリに複数回含まれることが予想される場合にのみ必要です。

関連する問題