【发布时间】:2017-01-13 21:51:55
【问题描述】:
在我的控制器中,我有一个简单的 LINQ 查询:
var results = .....ToList();
然后,我想将“结果”传递给呈现网格的视图。它需要一个模型:
@model IEnumerable<XXXX.WebSite.Areas.BrokerDashboard.Models.AccountHBSearchItem>
我不认为这会是个问题,但我明白了:
传入字典的模型项是“System.Collections.Generic.List”类型,但该字典需要一个“System.Collections.Generic.IEnumerable”类型的模型项
这让我很困惑,因为从我读到的所有内容来看,List<T> 已经是IEnumerable<T>。
根据here 的回答,我尝试了这个:
IEnumerable<string> eResults = results.ToList();
但这让我遇到Can implicitly convert 错误。
如果我不执行 .ToList() 则 results 是一个 IOrderedEnumerable,我得到这个:
传入字典的模型项的类型为“System.Linq.OrderedEnumerable”,但此字典需要“System.Collections.Generic.IEnumerable”类型的模型项
编辑:
这是整个查询:
var results = Context.GetLeadSalesAccountTransactions(accountID)
.OrderBy(a => a.TransactionDate)
.Select(a =>
{
currentTotal -= a.Debit != null ? (decimal)a.Debit : 0;
currentTotal += a.Credit != null ? (decimal)a.Credit : 0;
return new AccountHBSearchItem
{
AccountTransactionID = a.AccountTransactionID,
LeadID = a.LeadSales != null ? a.LeadSales.Lead.LeadID : 0,
Address = a.LeadSales != null ? a.LeadSales.Lead.Address : string.Empty,
LotNumber = a.LeadSales != null ? a.LeadSales.Lead.LotNumber : string.Empty,
Type = a.AccountTransactionType.GetDisplayName(),
Debit = a.Debit,
Credit = a.Credit,
RemainingBalance = currentTotal,
TransDate = a.TransactionDate
};
}
).OrderByDescending(i => i.TransDate).ToList();
【问题讨论】:
-
能否请您发布整个查询以及
MyModel的定义?谢谢 -
您可以将
List<T>传递给强类型为IEnumerable<T>的视图。你的类型不同吗? -
我认为你可以做 foo.Objects.AsEnumerable();在您的 linq 语句中
-
我已经发布了整个查询,并更新了@model 以显示真实的东西,减去客户的名称。谢谢!
标签: c# asp.net-mvc