我在链接数据库中有一个DateTime变量,我想要计算共享客户端ID的链接数,其中DateTime变量中的月份是当前月份。
但是我收到了这个错误:
CS1061:' ICollection'不包含' BuildDate'的定义没有扩展方法' BuildDate'接受类型' ICollection'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
视图由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 :(得分:0)
您的LINQ表达式不正确。
你不能将DisplayFor
助手与复杂的linq表达式一起使用(这里试图用谓词来获取计数)
您可以使用where条件在Count
集合属性上简单地呈现Links
方法调用的值。这应该有用。
<td>
@item.Links.Count(a=>a.BuildDate.Month == DateTime.Now.Month)
</td>
假设您要显示当前月份的链接数,对于您正在迭代的项目。