Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据列表传递给CreateAsync Func?_C#_Asp.net Core_Entity Framework Core - Fatal编程技术网

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.PagingList
1[f_uAnonymousType1
2[System.Int32,System.String]],但此ViewDataDictionary实例需要'ReflectionIT.Mvc.PagingList.PagingList'类型的模型项[AtlasNews.Models.News]',成功了,谢谢。