【发布时间】:2017-03-16 14:26:19
【问题描述】:
我对编写 linq 查询不是很清楚。我使用 linq lambda 表达式编写了一个查询以仅从表中选择某些列,并且我得到了无法将 linq 构造为实体的错误。当我使用 linq 编写相同的查询来选择所有列时,我没有收到任何错误,并且我得到了所有列,我稍后在视图中将其过滤掉。但我想使用 lambda 仅选择某些列。
代码sn-p:
视图模型:
public class StaggingInternalCashExceptionViewModel
{
public OutputCash OutputCash { get; set; }
public IEnumerable<StaggingInternalException> StaggingInternalException { get; set; }
//list of results of Stagginginternalcashexception
}
控制器:
public ActionResult Exceptionstest(string dd1, string dd2, string dd3)
{
StaggingInternalExceptionViewModel _app = new StaggingInternalExceptionViewModel();
_app.StaggingInternalException = db2.StaggingInternalExceptions.Where(x => x.Level1 == dd1 && x.Level2 == dd2 ).Select(i => new StaggingInternalException
{
StaggingInternalRowID = i.StaggingInternalRowID,
Category = i.Category,
EnterText1 = i.EnterText1,
InternalAmount = i.InternalAmount,
ExternalAmount = i.ExternalAmount
});
_app.StaggingInternalException = (from p in db2.StaggingInternalExceptions
where p.LoadID==loadid && p.Level1 == dd1 && p.Level2 == dd2 select p);
}
在上面的代码中,当我尝试从表中仅选择某些列时,或者如果我们在实体类方面仅选择某些属性时,lambda 表达式会引发错误。但查询返回所有列。我应该使用 DTOS 吗?我不确定数据传输对象的用途是什么。对此进行一些解释会很棒。谢谢。
【问题讨论】:
标签: asp.net-mvc entity-framework linq lambda dto