【发布时间】:2014-06-04 03:13:47
【问题描述】:
这里是场景: - 我有一份产品清单。 - 每个产品都有许多零件。 - 零件有两种类型:MAIN 和 OPTIONAL。
我想带上产品主要部件的清单。声明会是什么?
我目前正在使用此语句但返回错误:
@Html.DisplayFor(p => p.Products.FirstOrDefault().Parts.Where(i => i.PartType == percobaan2.Models.PartType.Main))
感谢您的帮助
更新:
这是错误:
System.Web.Mvc.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理 附加信息:模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。
附加信息:
这个代码虽然有效。但我需要添加 where 过滤器:
@Html.DisplayFor(p => p.Products.FirstOrDefault().Parts)
更新 2:
这是使用 mainparts 属性更新的视图模型类:
public class ProductDetail
{
public IEnumerable<Product> Products { get; set; }
public IEnumerable<Part> Parts { get; set; }
public IEnumerable<percobaan2.Models.Version> Versions { get; set; }
public IEnumerable<Category> Categories { get; set; }
public IEnumerable<Producer> Producers { get; set; }
public IEnumerable<Part> MainParts
{
get
{
return Parts.Where(p => p.PartType == PartType.Main);
}
}
}
【问题讨论】:
-
在不知道你的类型是如何定义的情况下有点难以回答。如果您可以提供这些(至少是您目前尝试查询的部分),那将很有帮助。
-
你引用过 System.Data.Linq 吗?如here。
-
@TiesonT。我添加了附加信息,我认为它可能会有所帮助。问题仅在于 WHERE 扩展 :(
-
@Nashibukasan 我更新了问题。它显示了一个有效的 linq 语句,但没有 WHERE 子句。但是当我添加 WHERE 时会出现错误
-
也许发布如果您对控制器内的相同数据执行相同操作会发生什么?可能还需要有关“percobaan2”的更多信息。不确定我现在可以提供帮助,抱歉:(
标签: c# asp.net-mvc linq lambda