C# 如何将数据列表传递给CreateAsync Func?
我对C# 如何将数据列表传递给CreateAsync Func?,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我对CreateAsync有问题,它希望IOrderedQueryable。 我只需要从我的新闻表中读取两条记录(Id,Title),并将它们传递给我的ViewModel,但它不允许我在CreateAsync中传递RetValue(列表类型) var MyNews = _context.News.Select(news => new { news.Id, news.Title, }).AsNoTracking().OrderByDescending(p => p.Id
CreateAsync
有问题,它希望IOrderedQueryable。
我只需要从我的新闻表中读取两条记录(Id,Title)
,并将它们传递给我的ViewModel
,但它不允许我在CreateAsync
中传递RetValue(列表类型)
var MyNews = _context.News.Select(news => new
{
news.Id,
news.Title,
}).AsNoTracking().OrderByDescending(p => p.Id);
List<ListNewsViewModel> RetValue = new List<ListNewsViewModel>();
foreach (var item in MyNews)
{
ListNewsViewModelLN = new ListNewsViewModel();
LN.Id = item.Id;
LN.Title = item.Title;
RetValue.Add(LN);
}
var model = await PagingList.CreateAsync(RetValue, 10, PageIndex);
model.Action = "EditNews";
return View(model);
var MyNews=\u context.News.Select(News=>new)
{
新闻,Id,,
新闻,标题,,
}).AsNoTracking().OrderByDescending(p=>p.Id);
List RetValue=新列表();
foreach(MyNews中的var项)
{
ListNewsViewModelLN=新建ListNewsViewModel();
LN.Id=项目Id;
项次标题=项目标题;
加上(项次);
}
var model=await PagingList.CreateAsync(RetValue,10,PageIndex);
model.Action=“EditNews”;
返回视图(模型);
您传递了一个列表
,该列表不是IQueryable,而是IEnumerable
直接传递查询结果:
var MyNews = _context.News.Select(news => new ListNews
{
Id = news.Id,
Title = news.Title,
}).AsNoTracking().OrderByDescending(p => p.Id);
var model = await PagingList.CreateAsync(MyNews, 10, PageIndex);
model.Action = "EditNews";
return View(model);
您可以尝试这样做:
var MyNews = (from q in _context.News
select new ListNewsViewModel()
{
Id = q.Id;
Title = q.Title;
})
.AsNoTracking()
.OrderByDescending(p => p.Id);
var model = await PagingList.CreateAsync(MyNews, 10, PageIndex);
model.Action = "EditNews";
return View(model);
-从编译器得到的错误消息是什么?-
PagingList
是您自己的类还是库中的类?请告诉我CreateAync方法应该是什么类型?感谢您的回复,我在cshtml端设置从ListNewsViewModel获取数据,我不想将我的新闻表数据传递给cshtml,因为我的新闻表有很多记录。同时,当我只选择了两条记录(Id,Title)并且它需要选择全部时,我得到了一个错误records@MoeinKhakpour“我不想传递我的新闻表数据”是什么意思?您正在将整个表加载到内存中,这是最糟糕的情况。尝试此变体,它应该可以按预期工作。我不想加载整个数据,这就是我定义ViewModel的原因,但我的问题是我无法在CreateAync上传递RetValue,因为它接受IOrderedQueryable,RetValue是列表类型。Morover当我编写代码时,我得到了以下错误:InvalidOperationException:传递到ViewDataDictionary的模型项的类型为'ReflectionIT.Mvc.Paging.PagingList1[f_uAnonymousType1
2[System.Int32,System.String]],但此ViewDataDictionary实例需要'ReflectionIT.Mvc.PagingList.PagingList'类型的模型项[AtlasNews.Models.News]',成功了,谢谢。