我正在使用C#MVC5并尝试在我的剃刀页面上按帐号显示分组... This link让我大部分都在那里,但我似乎无法将Link.IGrouping转换为IEnumerable。 ..
我提交了一个加密的查询字符串,它返回了我转换为List<>的XML。然后我尝试将它与Linq分组。我错过了很简单的东西!我想显示“帐号”作为标题,然后在Razor视图中列出该帐号的所有对帐单日期。
我的“ViewModel”(我把XML放到“DocumentViewModel”中,用于Razor中的Display我使用的是“Doc”类(详细信息)和“DocViewModel”(作为标题):
public class DocViewModel
{
[Display(Name = "Account Number")]
public string AccountNumber { get; set; }
public IEnumerable<Doc> DocsList { get; set; }
}
public class Doc
{
[Display(Name = "Repostitory")]
public string Repository { get; set; }
public int DocId { get; set; }
[Display(Name = "Statement Date")]
public DateTime DocDate { get; set; }
[Display(Name = "Account Number")]
public string AcctNum { get; set; }
public string FND { get; set; }
}
public class DocumentViewModel
{
[Display(Name = "Repostitory")]
public string Repository { get; set; }
public int DocId { get; set; }
[Display(Name = "Statement Date")]
public DateTime DocDate { get; set; }
[Display(Name = "Account Number")]
public string AcctNum {get;set;}
public string FND { get; set; }
}
我的控制器代码:
DocumentViewModel modelDocView = new DocumentViewModel();
string newURL = BNYMManager.BuildEncryptedURLRequest(0, 2016);
List<DocumentViewModel> docs = new List<DocumentViewModel>();
docs = XMLBuild.CreateXML(newURL); //This returns a list sorted by AcctNum and Date
var modelXML = docs;
var modelDocs = docs.GroupBy(t => t.AcctNum).Select(g => new DocViewModel
{
AccountNumber= g.Key,
DocsList = g //I get the error here - Cannot implicitily convert IGrouping to IEnumerable (full error below)
});
return View("~/Views/EPresentment/Docs.cshtml", modelDocs);
以下是完整的错误消息:
无法隐式转换类型 'System.Linq.IGrouping'到 'System.Collections.Generic.IEnumerable'。 存在显式转换(您是否错过了演员?)
[编辑} 我无法弄清楚如何在视图中显示这个...我确实找到this并且我能够使用以下组来创建我的模型:
var queryAcct =
from doc in docs
group doc by doc.AcctNum into AcctGroup
orderby AcctGroup.Key
select AcctGroup;
但是现在当我尝试在每个this的视图中显示时,我似乎无法让它工作:
到目前为止,这是我的观看代码:
@foreach(模型中的var AccountGroup) { @ AccountGroup.AcctNum foreach(AccountGroup中的var项) { @ item.DocDate } }
这只是不起作用!
答案 0 :(得分:0)
问题在于在初始化程序中设置DocList
属性。它显然是IEnumerable<T>
,而g
在此输入,或者您选择的GroupedEnumerable
中的单个项目是IGrouping<TKey, TValue>
。你需要这样的东西:
var modelDocs = docs.GroupBy(t => t.AcctNum).Select(g => new DocViewModel
{
AccountNumber= g.Key,
DocsList = g.ToList()
});