2017-11-11 15 views
-1

私はLinks DBにDateTime変数を持っています。そして、DateTime変数の月が現在の月であるクライアントIDを共有するリンクの数をカウントしたいと思います。HTMLヘルパーの条件MVC5

CS1061: 'ICollection' does not contain a definition for 'BuildDate' and no extension method 'BuildDate' accepting a first argument of type 'ICollection' could be found (are you missing a using directive or an assembly reference?)

ビューはEF6によって構築されています。

は、しかし、私はこのエラーを取得します。クライアントビューで

ループ:

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.client) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.monthlyQuota) 
    </td> 
        <td> 
     @Html.DisplayFor(modelItem => item.Links.Count) 
    </td> 
          <td> 
           @Html.DisplayFor(modelItem => item.Links.Where(item.Links.BuildDate.Month == Datetime.Month).Count) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.TopicTF) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | 
     @Html.ActionLink("Details", "Details", new { id=item.ID }) | 
     @Html.ActionLink("Delete", "Delete", new { id=item.ID }) 
    </td> 
</tr> 
} 

リンクモデル

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 

namespace LinksDB.Models 
{ 
public class Link 
{ 
    public int LinkID { get; set; } 
    public int IdentifierID { get; set; } 

    public string Obdomain { get; set; } 
    public string Obpage { get; set; } 

    public int ClientID { get; set; } 

    public string Anchor { get; set; } 

    [Required] 
    public DateTime BuildDate { get; set; } 

    public virtual Identifier Identifier { get; set; } 
    public virtual Client Client { get; set; } 
} 
} 

答えて

0

あなたのLINQの式が間違っています。

あなたは(ここで、述語でカウントを取得しようとしてここに )複雑なLINQの式でDisplayForヘルパーを使用することはできません

あなたは、単にあなたのWHERE条件でLinksコレクションプロパティにCountメソッド呼び出しの値を描画します。これはうまくいくはずです。

<td> 
    @item.Links.Count(a=>a.BuildDate.Month == DateTime.Now.Month) 
</td> 

現在の月のリンク数を反復して表示すると仮定します。

+0

「DateTime」である必要があります。 udpated答えを参照してください。データをフィルタリングする述語を持つlinq式で 'DisplayFor'を使うことはできません。 – Shyju

+1

あなたの編集した答えは完璧に動作します:)あなたの助けに感謝! – liamcook

+0

これは、C#式 '@(10-item.Links.Count(a => a.BuildDate.Month == DateTime.Now.Month))' – Shyju

関連する問題