我只需要为每个订单获取一条记录,而且如果有广告,我需要连接到记录。但是当我使用时,Concat我收到了这个错误。
无法将类型隐式转换
System.Collections.Generic.IEnumerable<x>为System.Collections.Generic.List<x>. 存在显式转换(您是否缺少演员表?)
DateTime now = DateTime.Now;
var pom = (from moduleNews in db.CMS_News_NewsInWebModule
join module in db.CMS_News_WebModule on moduleNews.moduleKey equals module.moduleKey
join newsEdnm in db.CMS_News_NewsToEditionNumber on moduleNews.newsGUID equals newsEdnm.newsGUID
where module.moduleKey == id && newsEdnm.dateToBePublished < now && newsEdnm.CMS_News_Edition_Number.editionID == 2
//orderby newsEdnm.dateToBePublished descending, moduleNews.order
select
new NewsModules
{
order = moduleNews.order,
id = moduleNews.newsInWebModuleId,
moduleKey = module.moduleKey,
klientName = module.klientName,
maxNews = module.maxNews,
newsGUID = moduleNews.newsGUID,
title = moduleNews.CMS_News_News.title,
isAdvertise = moduleNews.isAdvertise,
advertise = moduleNews.advertise,
dateToBePublished = newsEdnm.dateToBePublished.Value
}).OrderBy(x => x.order).ThenByDescending(x => x.dateToBePublished).ToList(); //.GroupBy(x => x.order);
pom = pom.GroupBy(n => n.order).Select(p => p.FirstOrDefault()).ToList();
Run Code Online (Sandbox Code Playgroud)
var advirtise = (from moduleNews in db.CMS_News_NewsInWebModule
join module in db.CMS_News_WebModule on moduleNews.moduleKey equals module.moduleKey
where module.moduleKey == id && moduleNews.isAdvertise
//orderby newsEdnm.dateToBePublished descending, moduleNews.order
select
new NewsModules
{
order = moduleNews.order,
id = moduleNews.newsInWebModuleId,
moduleKey = module.moduleKey,
klientName = module.klientName,
maxNews = module.maxNews,
newsGUID = moduleNews.newsGUID,
title = moduleNews.CMS_News_News.title,
isAdvertise = moduleNews.isAdvertise,
advertise = moduleNews.advertise,
dateToBePublished = null
}).OrderBy(x => x.order).ToList();
pom = pom.Concat(advirtise);
Run Code Online (Sandbox Code Playgroud)
这里的问题是:
pom = pom.Concat(advirtise);
^ ^-------+------------^
| |
| +-----> returns IEnumerable<Something> -----+
| |
+----- which you try to store into List<Something> <-----+
Run Code Online (Sandbox Code Playgroud)
您需要创建另一个List<Something>,或将 的类型更改pom为IEnumerable<Something>:
pom = pom.Concat(advirtise).ToList();
Run Code Online (Sandbox Code Playgroud)
这是一个演示问题的简短程序:
var pom = new[] { "a", "b", "c" }.ToList();
pom = pom.Concat(new[] { "x", "y", "z" }); // CS0266 - cannot implicitly ...
Run Code Online (Sandbox Code Playgroud)
应该这样写:
var pom = new[] { "a", "b", "c" }.ToList();
pom = pom.Concat(new[] { "x", "y", "z" }).ToList();
Run Code Online (Sandbox Code Playgroud)